2014-04-15 15:39:23 +01:00
/* Phaser v2.0.4 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */
2014-02-28 09:30:53 +00:00
2014-04-01 03:02:36 +01:00
( function ( ) { var a = this , b = b || { } ; b . WEBGL _RENDERER = 0 , b . CANVAS _RENDERER = 1 , b . VERSION = "v1.5.2" , b . blendModes = { NORMAL : 0 , ADD : 1 , MULTIPLY : 2 , SCREEN : 3 , OVERLAY : 4 , DARKEN : 5 , LIGHTEN : 6 , COLOR _DODGE : 7 , COLOR _BURN : 8 , HARD _LIGHT : 9 , SOFT _LIGHT : 10 , DIFFERENCE : 11 , EXCLUSION : 12 , HUE : 13 , SATURATION : 14 , COLOR : 15 , LUMINOSITY : 16 } , b . scaleModes = { DEFAULT : 0 , LINEAR : 0 , NEAREST : 1 } , b . INTERACTION _FREQUENCY = 30 , b . AUTO _PREVENT _DEFAULT = ! 0 , b . RAD _TO _DEG = 180 / Math . PI , b . DEG _TO _RAD = Math . PI / 180 , b . Point = function ( a , b ) { this . x = a || 0 , this . y = b || 0 } , b . Point . prototype . clone = function ( ) { return new b . Point ( this . x , this . y ) } , b . Point . prototype . constructor = b . Point , b . Point . prototype . set = function ( a , b ) { this . x = a || 0 , this . y = b || ( 0 !== b ? this . x : 0 ) } , b . Rectangle = function ( a , b , c , d ) { this . x = a || 0 , this . y = b || 0 , this . width = c || 0 , this . height = d || 0 } , b . Rectangle . prototype . clone = function ( ) { return new b . Rectangle ( this . x , this . y , this . width , this . height ) } , b . Rectangle . prototype . contains = function ( a , b ) { if ( this . width <= 0 || this . height <= 0 ) return ! 1 ; var c = this . x ; if ( a >= c && a <= c + this . width ) { var d = this . y ; if ( b >= d && b <= d + this . height ) return ! 0 } return ! 1 } , b . Rectangle . prototype . constructor = b . Rectangle , b . EmptyRectangle = new b . Rectangle ( 0 , 0 , 0 , 0 ) , b . Polygon = function ( a ) { if ( a instanceof Array || ( a = Array . prototype . slice . call ( arguments ) ) , "number" == typeof a [ 0 ] ) { for ( var c = [ ] , d = 0 , e = a . length ; e > d ; d += 2 ) c . push ( new b . Point ( a [ d ] , a [ d + 1 ] ) ) ; a = c } this . points = a } , b . Polygon . prototype . clone = function ( ) { for ( var a = [ ] , c = 0 ; c < this . points . length ; c ++ ) a . push ( this . points [ c ] . clone ( ) ) ; return new b . Polygon ( a ) } , b . Polygon . prototype . contains = function ( a , b ) { for ( var c = ! 1 , d = 0 , e = this . points . length - 1 ; d < this . points . length ; e = d ++ ) { var f = this . points [ d ] . x , g = this . points [ d ] . y , h = this . points [ e ] . x , i = this . points [ e ] . y , j = g > b != i > b && ( h - f ) * ( b - g ) / ( i - g ) + f > a ; j && ( c = ! c ) } return c } , b . Polygon . prototype . constructor = b . Polygon , b . Circle = function ( a , b , c ) { this . x = a || 0 , this . y = b || 0 , this . radius = c || 0 } , b . Circle . prototype . clone = function ( ) { return new b . Circle ( this . x , this . y , this . radius ) } , b . Circle . prototype . contains = function ( a , b ) { if ( this . radius <= 0 ) return ! 1 ; var c = this . x - a , d = this . y - b , e = this . radius * this . radius ; return c *= c , d *= d , e >= c + d } , b . Circle . prototype . constructor = b . Circle , b . Ellipse = function ( a , b , c , d ) { this . x = a || 0 , this . y = b || 0 , this . width = c || 0 , this . height = d || 0 } , b . Ellipse . prototype . clone = function ( ) { return new b . Ellipse ( this . x , this . y , this . width , this . height ) } , b . Ellipse . prototype . contains = function ( a , b ) { if ( this . width <= 0 || this . height <= 0 ) return ! 1 ; var c = ( a - this . x ) / this . width , d = ( b - this . y ) / this . height ; return c *= c , d *= d , 1 >= c + d } , b . Ellipse . prototype . getBounds = function ( ) { return new b . Rectangle ( this . x , this . y , this . width , this . height ) } , b . Ellipse . prototype . constructor = b . Ellipse , b . determineMatrixArrayType = function ( ) { return "undefined" != typeof Float32Array ? Float32Array : Array } , b . Matrix2 = b . determineMatrixArrayType ( ) , b . Matrix = function ( ) { this . a = 1 , this . b = 0 , this . c = 0 , this . d = 1 , this . tx = 0 , this . ty = 0 } , b . Matrix . prototype . fromArray = function ( a ) { this . a = a [ 0 ] , this . b = a [ 1 ] , this . c = a [ 3 ] , this . d = a [ 4 ] , this . tx = a [ 2 ] , this . ty = a [ 5 ] } , b . Matrix . prototype . toArray = function ( a ) { this . array || ( this . array = new Float32Array ( 9 ) ) ; var b = this . array ; return a ? ( this . array [ 0 ] = this . a , this . array [ 1 ] = this . c , this . array [ 2 ] = 0 , this . array [ 3 ] = this . b , this . array [ 4 ] = this . d , this . array [ 5 ] = 0 , this . array [ 6 ] = this . tx , this . array [ 7 ] = this . ty , this . array [ 8 ] = 1 ) : ( this . array [ 0 ] = this . a , this . array [ 1 ] = this . b , this . array [ 2 ] = this . tx , this . array [ 3 ] = this . c , this . array [ 4 ] = this . d , this . array [ 5 ] = this . ty , this . array [ 6 ] = 0 , this . array [ 7 ] = 0 , this . array [ 8 ] = 1 ) , b } , b . identityMatrix = new b . Matrix , b . DisplayObject = function ( ) { this . position = new b . Point , this . scale = new b . Point ( 1 , 1 ) , this . pivot = new b . Point ( 0 , 0 ) , this . rotation = 0 , this . alpha = 1 , this . visible = ! 0 , this . hitArea = null , this . buttonMode = ! 1 , this . renderable = ! 1 , this . parent = null , this . stage = null , this . worldAlpha = 1 , this . _interactive = ! 1 , this . defaultCursor = "pointer" , this . worldTransform = new b . Matrix , this . color = [ ] , this . dynamic = ! 0 , this . _sr = 0 , this . _cr = 1 , this . filterArea = null , this . _bounds = new b . Rectangle ( 0 , 0 , 1 , 1 ) , this . _currentBounds = null , this . _mask = null , this . _cacheAsBitmap = ! 1 , this . _cacheIsDirty = ! 1 } , b . DisplayObject . prototype . constructor = b . DisplayObject , b . DisplayObject . prototype . setInteractive = function ( a ) { this . interactive = a } , Object . defineProp
} , b . PixiFastShader . prototype . init = function ( ) { var a = this . gl , c = b . compileProgram ( a , this . vertexSrc , this . fragmentSrc ) ; a . useProgram ( c ) , this . uSampler = a . getUniformLocation ( c , "uSampler" ) , this . projectionVector = a . getUniformLocation ( c , "projectionVector" ) , this . offsetVector = a . getUniformLocation ( c , "offsetVector" ) , this . dimensions = a . getUniformLocation ( c , "dimensions" ) , this . uMatrix = a . getUniformLocation ( c , "uMatrix" ) , this . aVertexPosition = a . getAttribLocation ( c , "aVertexPosition" ) , this . aPositionCoord = a . getAttribLocation ( c , "aPositionCoord" ) , this . aScale = a . getAttribLocation ( c , "aScale" ) , this . aRotation = a . getAttribLocation ( c , "aRotation" ) , this . aTextureCoord = a . getAttribLocation ( c , "aTextureCoord" ) , this . colorAttribute = a . getAttribLocation ( c , "aColor" ) , - 1 === this . colorAttribute && ( this . colorAttribute = 2 ) , this . attributes = [ this . aVertexPosition , this . aPositionCoord , this . aScale , this . aRotation , this . aTextureCoord , this . colorAttribute ] , this . program = c } , b . PixiFastShader . prototype . destroy = function ( ) { this . gl . deleteProgram ( this . program ) , this . uniforms = null , this . gl = null , this . attributes = null } , b . StripShader = function ( ) { this . program = null , this . fragmentSrc = [ "precision mediump float;" , "varying vec2 vTextureCoord;" , "varying float vColor;" , "uniform float alpha;" , "uniform sampler2D uSampler;" , "void main(void) {" , " gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));" , " gl_FragColor = gl_FragColor * alpha;" , "}" ] , this . vertexSrc = [ "attribute vec2 aVertexPosition;" , "attribute vec2 aTextureCoord;" , "attribute float aColor;" , "uniform mat3 translationMatrix;" , "uniform vec2 projectionVector;" , "varying vec2 vTextureCoord;" , "uniform vec2 offsetVector;" , "varying float vColor;" , "void main(void) {" , " vec3 v = translationMatrix * vec3(aVertexPosition, 1.0);" , " v -= offsetVector.xyx;" , " gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / projectionVector.y + 1.0 , 0.0, 1.0);" , " vTextureCoord = aTextureCoord;" , " vColor = aColor;" , "}" ] } , b . StripShader . prototype . init = function ( ) { var a = b . gl , c = b . compileProgram ( a , this . vertexSrc , this . fragmentSrc ) ; a . useProgram ( c ) , this . uSampler = a . getUniformLocation ( c , "uSampler" ) , this . projectionVector = a . getUniformLocation ( c , "projectionVector" ) , this . offsetVector = a . getUniformLocation ( c , "offsetVector" ) , this . colorAttribute = a . getAttribLocation ( c , "aColor" ) , this . aVertexPosition = a . getAttribLocation ( c , "aVertexPosition" ) , this . aTextureCoord = a . getAttribLocation ( c , "aTextureCoord" ) , this . translationMatrix = a . getUniformLocation ( c , "translationMatrix" ) , this . alpha = a . getUniformLocation ( c , "alpha" ) , this . program = c } , b . PrimitiveShader = function ( a ) { this . gl = a , this . program = null , this . fragmentSrc = [ "precision mediump float;" , "varying vec4 vColor;" , "void main(void) {" , " gl_FragColor = vColor;" , "}" ] , this . vertexSrc = [ "attribute vec2 aVertexPosition;" , "attribute vec4 aColor;" , "uniform mat3 translationMatrix;" , "uniform vec2 projectionVector;" , "uniform vec2 offsetVector;" , "uniform float alpha;" , "uniform vec3 tint;" , "varying vec4 vColor;" , "void main(void) {" , " vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);" , " v -= offsetVector.xyx;" , " gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);" , " vColor = aColor * vec4(tint * alpha, alpha);" , "}" ] , this . init ( ) } , b . PrimitiveShader . prototype . init = function ( ) { var a = this . gl , c = b . compileProgram ( a , this . vertexSrc , this . fragmentSrc ) ; a . useProgram ( c ) , this . projectionVector = a . getUniformLocation ( c , "projectionVector" ) , this . offsetVector = a . getUniformLocation ( c , "offsetVector" ) , this . tintColor = a . getUniformLocation ( c , "tint" ) , this . aVertexPosition = a . getAttribLocation ( c , "aVertexPosition" ) , this . colorAttribute = a . getAttribLocation ( c , "aColor" ) , this . attributes = [ this . aVertexPosition , this . colorAttribute ] , this . translationMatrix = a . getUniformLocation ( c , "translationMatrix" ) , this . alpha = a . getUniformLocation ( c , "alpha" ) , this . program = c } , b . PrimitiveShader . prototype . destroy = function ( ) { this . gl . deleteProgram ( this . program ) , this . uniforms = null , this . gl = null , this . attribute = null } , b . WebGLGraphics = function ( ) { } , b . WebGLGraphics . renderGraphics = function ( a , c ) { var d = c . gl , e = c . projection , f = c . offset , g = c . shaderManager . primitiveShader ; a . _w
2014-04-15 15:39:23 +01:00
} , b . WebGLFilterManager . prototype . applyFilterPass = function ( a , c , d , e ) { var f = this . gl , g = a . shaders [ f . id ] ; g || ( g = new b . PixiShader ( f ) , g . fragmentSrc = a . fragmentSrc , g . uniforms = a . uniforms , g . init ( ) , a . shaders [ f . id ] = g ) , f . useProgram ( g . program ) , f . uniform2f ( g . projectionVector , d / 2 , - e / 2 ) , f . uniform2f ( g . offsetVector , 0 , 0 ) , a . uniforms . dimensions && ( a . uniforms . dimensions . value [ 0 ] = this . width , a . uniforms . dimensions . value [ 1 ] = this . height , a . uniforms . dimensions . value [ 2 ] = this . vertexArray [ 0 ] , a . uniforms . dimensions . value [ 3 ] = this . vertexArray [ 5 ] ) , g . syncUniforms ( ) , f . bindBuffer ( f . ARRAY _BUFFER , this . vertexBuffer ) , f . vertexAttribPointer ( g . aVertexPosition , 2 , f . FLOAT , ! 1 , 0 , 0 ) , f . bindBuffer ( f . ARRAY _BUFFER , this . uvBuffer ) , f . vertexAttribPointer ( g . aTextureCoord , 2 , f . FLOAT , ! 1 , 0 , 0 ) , f . bindBuffer ( f . ARRAY _BUFFER , this . colorBuffer ) , f . vertexAttribPointer ( g . colorAttribute , 2 , f . FLOAT , ! 1 , 0 , 0 ) , f . bindBuffer ( f . ELEMENT _ARRAY _BUFFER , this . indexBuffer ) , f . drawElements ( f . TRIANGLES , 6 , f . UNSIGNED _SHORT , 0 ) , this . renderSession . drawCount ++ } , b . WebGLFilterManager . prototype . initShaderBuffers = function ( ) { var a = this . gl ; this . vertexBuffer = a . createBuffer ( ) , this . uvBuffer = a . createBuffer ( ) , this . colorBuffer = a . createBuffer ( ) , this . indexBuffer = a . createBuffer ( ) , this . vertexArray = new Float32Array ( [ 0 , 0 , 1 , 0 , 0 , 1 , 1 , 1 ] ) , a . bindBuffer ( a . ARRAY _BUFFER , this . vertexBuffer ) , a . bufferData ( a . ARRAY _BUFFER , this . vertexArray , a . STATIC _DRAW ) , this . uvArray = new Float32Array ( [ 0 , 0 , 1 , 0 , 0 , 1 , 1 , 1 ] ) , a . bindBuffer ( a . ARRAY _BUFFER , this . uvBuffer ) , a . bufferData ( a . ARRAY _BUFFER , this . uvArray , a . STATIC _DRAW ) , this . colorArray = new Float32Array ( [ 1 , 16777215 , 1 , 16777215 , 1 , 16777215 , 1 , 16777215 ] ) , a . bindBuffer ( a . ARRAY _BUFFER , this . colorBuffer ) , a . bufferData ( a . ARRAY _BUFFER , this . colorArray , a . STATIC _DRAW ) , a . bindBuffer ( a . ELEMENT _ARRAY _BUFFER , this . indexBuffer ) , a . bufferData ( a . ELEMENT _ARRAY _BUFFER , new Uint16Array ( [ 0 , 1 , 2 , 1 , 3 , 2 ] ) , a . STATIC _DRAW ) } , b . WebGLFilterManager . prototype . destroy = function ( ) { var a = this . gl ; this . filterStack = null , this . offsetX = 0 , this . offsetY = 0 ; for ( var b = 0 ; b < this . texturePool . length ; b ++ ) this . texturePool . destroy ( ) ; this . texturePool = null , a . deleteBuffer ( this . vertexBuffer ) , a . deleteBuffer ( this . uvBuffer ) , a . deleteBuffer ( this . colorBuffer ) , a . deleteBuffer ( this . indexBuffer ) } , b . FilterTexture = function ( a , b , c ) { this . gl = a , this . frameBuffer = a . createFramebuffer ( ) , this . texture = a . createTexture ( ) , a . bindTexture ( a . TEXTURE _2D , this . texture ) , a . texParameteri ( a . TEXTURE _2D , a . TEXTURE _MAG _FILTER , a . LINEAR ) , a . texParameteri ( a . TEXTURE _2D , a . TEXTURE _MIN _FILTER , a . LINEAR ) , a . texParameteri ( a . TEXTURE _2D , a . TEXTURE _WRAP _S , a . CLAMP _TO _EDGE ) , a . texParameteri ( a . TEXTURE _2D , a . TEXTURE _WRAP _T , a . CLAMP _TO _EDGE ) , a . bindFramebuffer ( a . FRAMEBUFFER , this . framebuffer ) , a . bindFramebuffer ( a . FRAMEBUFFER , this . frameBuffer ) , a . framebufferTexture2D ( a . FRAMEBUFFER , a . COLOR _ATTACHMENT0 , a . TEXTURE _2D , this . texture , 0 ) , this . resize ( b , c ) } , b . FilterTexture . prototype . clear = function ( ) { var a = this . gl ; a . clearColor ( 0 , 0 , 0 , 0 ) , a . clear ( a . COLOR _BUFFER _BIT ) } , b . FilterTexture . prototype . resize = function ( a , b ) { if ( this . width !== a || this . height !== b ) { this . width = a , this . height = b ; var c = this . gl ; c . bindTexture ( c . TEXTURE _2D , this . texture ) , c . texImage2D ( c . TEXTURE _2D , 0 , c . RGBA , a , b , 0 , c . RGBA , c . UNSIGNED _BYTE , null ) } } , b . FilterTexture . prototype . destroy = function ( ) { var a = this . gl ; a . deleteFramebuffer ( this . frameBuffer ) , a . deleteTexture ( this . texture ) , this . frameBuffer = null , this . texture = null } , b . CanvasMaskManager = function ( ) { } , b . CanvasMaskManager . prototype . pushMask = function ( a , c ) { c . save ( ) ; var d = a . alpha , e = a . worldTransform ; c . setTransform ( e . a , e . c , e . b , e . d , e . tx , e . ty ) , b . CanvasGraphics . renderGraphicsMask ( a , c ) , c . clip ( ) , a . worldAlpha = d } , b . CanvasMaskManager . prototype . popMask = function ( a ) { a . restore ( ) } , b . CanvasTinter = function ( ) { } , b . CanvasTinter . getTintedTexture = function ( a , c ) { var d = a . texture ; c = b . CanvasTinter . roundColor ( c ) ; var e = "#" + ( "00000" + ( 0 | c ) . toString ( 16 ) ) . substr ( - 6 ) ; if ( d . tintCache = d . tintCache || { } , d . tintCache [ e ] ) return d . tintCache [ e ] ; var f = b . CanvasTinter . canvas || document . createElement ( "canvas" ) ; if ( b . CanvasTinter . tintMethod ( d , c , f ) , b . CanvasTinter . convertTintToImage ) { var g = new Image ; g . src = f . toDataURL ( ) , d . tintCache [ e ] = g } else d . tintCache [ e ] = f , b . CanvasTinter . canvas = null ; return f } , b . CanvasTinter . tintWithMultiply = function ( a , b , c ) { v
var e = 0 ; if ( b + 1 >= a . length ) switch ( d ) { case 1 : a = new Array ( b + 1 - a . length ) . join ( c ) + a ; break ; case 3 : var f = Math . ceil ( ( e = b - a . length ) / 2 ) , g = e - f ; a = new Array ( g + 1 ) . join ( c ) + a + new Array ( f + 1 ) . join ( c ) ; break ; default : a += new Array ( b + 1 - a . length ) . join ( c ) } return a } , isPlainObject : function ( a ) { if ( "object" != typeof a || a . nodeType || a === a . window ) return ! 1 ; try { if ( a . constructor && ! { } . hasOwnProperty . call ( a . constructor . prototype , "isPrototypeOf" ) ) return ! 1 } catch ( b ) { return ! 1 } return ! 0 } , extend : function ( ) { var a , c , d , e , f , g , h = arguments [ 0 ] || { } , i = 1 , j = arguments . length , k = ! 1 ; for ( "boolean" == typeof h && ( k = h , h = arguments [ 1 ] || { } , i = 2 ) , j === i && ( h = this , -- i ) ; j > i ; i ++ ) if ( null != ( a = arguments [ i ] ) ) for ( c in a ) d = h [ c ] , e = a [ c ] , h !== e && ( k && e && ( b . Utils . isPlainObject ( e ) || ( f = Array . isArray ( e ) ) ) ? ( f ? ( f = ! 1 , g = d && Array . isArray ( d ) ? d : [ ] ) : g = d && b . Utils . isPlainObject ( d ) ? d : { } , h [ c ] = b . Utils . extend ( k , g , e ) ) : void 0 !== e && ( h [ c ] = e ) ) ; return h } } , "function" != typeof Function . prototype . bind && ( Function . prototype . bind = function ( ) { var a = Array . prototype . slice ; return function ( b ) { function c ( ) { var f = e . concat ( a . call ( arguments ) ) ; d . apply ( this instanceof c ? this : b , f ) } var d = this , e = a . call ( arguments , 1 ) ; if ( "function" != typeof d ) throw new TypeError ; return c . prototype = function f ( a ) { return a && ( f . prototype = a ) , this instanceof f ? void 0 : new f } ( d . prototype ) , c } } ( ) ) , Array . isArray || ( Array . isArray = function ( a ) { return "[object Array]" == Object . prototype . toString . call ( a ) } ) , Array . prototype . forEach || ( Array . prototype . forEach = function ( a ) { "use strict" ; if ( void 0 === this || null === this ) throw new TypeError ; var b = Object ( this ) , c = b . length >>> 0 ; if ( "function" != typeof a ) throw new TypeError ; for ( var d = arguments . length >= 2 ? arguments [ 1 ] : void 0 , e = 0 ; c > e ; e ++ ) e in b && a . call ( d , b [ e ] , e , b ) } ) , b . Circle = function ( a , b , c ) { a = a || 0 , b = b || 0 , c = c || 0 , this . x = a , this . y = b , this . _diameter = c , this . _radius = c > 0 ? . 5 * c : 0 } , b . Circle . prototype = { circumference : function ( ) { return 2 * Math . PI * this . _radius } , setTo : function ( a , b , c ) { return this . x = a , this . y = b , this . _diameter = c , this . _radius = . 5 * c , this } , copyFrom : function ( a ) { return this . setTo ( a . x , a . y , a . diameter ) } , copyTo : function ( a ) { return a . x = this . x , a . y = this . y , a . diameter = this . _diameter , a } , distance : function ( a , c ) { return "undefined" == typeof c && ( c = ! 1 ) , c ? b . Math . distanceRound ( this . x , this . y , a . x , a . y ) : b . Math . distance ( this . x , this . y , a . x , a . y ) } , clone : function ( a ) { return "undefined" == typeof a ? a = new b . Circle ( this . x , this . y , this . diameter ) : a . setTo ( this . x , this . y , this . diameter ) , a } , contains : function ( a , c ) { return b . Circle . contains ( this , a , c ) } , circumferencePoint : function ( a , c , d ) { return b . Circle . circumferencePoint ( this , a , c , d ) } , offset : function ( a , b ) { return this . x += a , this . y += b , this } , offsetPoint : function ( a ) { return this . offset ( a . x , a . y ) } , toString : function ( ) { return "[{Phaser.Circle (x=" + this . x + " y=" + this . y + " diameter=" + this . diameter + " radius=" + this . radius + ")}]" } } , b . Circle . prototype . constructor = b . Circle , Object . defineProperty ( b . Circle . prototype , "diameter" , { get : function ( ) { return this . _diameter } , set : function ( a ) { a > 0 && ( this . _diameter = a , this . _radius = . 5 * a ) } } ) , Object . defineProperty ( b . Circle . prototype , "radius" , { get : function ( ) { return this . _radius } , set : function ( a ) { a > 0 && ( this . _radius = a , this . _diameter = 2 * a ) } } ) , Object . defineProperty ( b . Circle . prototype , "left" , { get : function ( ) { return this . x - this . _radius } , set : function ( a ) { a > this . x ? ( this . _radius = 0 , this . _diameter = 0 ) : this . radius = this . x - a } } ) , Object . defineProperty ( b . Circle . prototype , "right" , { get : function ( ) { return this . x + this . _radius } , set : function ( a ) { a < this . x ? ( this . _radius = 0 , this . _diameter = 0 ) : this . radius = a - this . x } } ) , Object . defineProperty ( b . Circle . prototype , "top" , { get : function ( ) { return this . y - this . _radius } , set : function ( a ) { a > this . y ? ( this . _radius = 0 , this . _diameter = 0 ) : this . radius = this . y - a } } ) , Object . defineProperty ( b . Circle . prototype , "bottom" , { get : function ( ) { return this . y + this . _radius } , set : function ( a ) { a < this . y ? ( this . _radius = 0 , this . _diameter = 0 ) : this . radius = a - this . y } } ) , Object . defineProperty ( b . Circle . prototype , "area" , { get : function ( ) { return this . _radius > 0 ? Math . PI * this . _radius * this . _radius : 0 } } ) , Object . defineProperty ( b . Circle . prototype , "empty" , { get : function ( ) { return 0 === this . _diameter } , set : function ( a ) { a === ! 0 && this . setTo ( 0 , 0 , 0 ) } } ) , b . Circle . contains = function ( a , b , c ) { if ( a . radius > 0 && b >= a . left && b <= a . right && c >= a . top && c <
2014-04-17 14:59:04 +01:00
} } , b . SignalBinding . prototype . constructor = b . SignalBinding , b . Filter = function ( a , c , d ) { this . game = a , this . type = b . WEBGL _FILTER , this . passes = [ this ] , this . shaders = [ ] , this . dirty = ! 0 , this . padding = 0 , this . uniforms = { time : { type : "1f" , value : 0 } , resolution : { type : "2f" , value : { x : 256 , y : 256 } } , mouse : { type : "2f" , value : { x : 0 , y : 0 } } } , this . fragmentSrc = d || [ ] } , b . Filter . prototype = { init : function ( ) { } , setResolution : function ( a , b ) { this . uniforms . resolution . value . x = a , this . uniforms . resolution . value . y = b } , update : function ( a ) { "undefined" != typeof a && ( a . x > 0 && ( this . uniforms . mouse . x = a . x . toFixed ( 2 ) ) , a . y > 0 && ( this . uniforms . mouse . y = a . y . toFixed ( 2 ) ) ) , this . uniforms . time . value = this . game . time . totalElapsedSeconds ( ) } , destroy : function ( ) { this . game = null } } , b . Filter . prototype . constructor = b . Filter , Object . defineProperty ( b . Filter . prototype , "width" , { get : function ( ) { return this . uniforms . resolution . value . x } , set : function ( a ) { this . uniforms . resolution . value . x = a } } ) , Object . defineProperty ( b . Filter . prototype , "height" , { get : function ( ) { return this . uniforms . resolution . value . y } , set : function ( a ) { this . uniforms . resolution . value . y = a } } ) , b . Plugin = function ( a , b ) { "undefined" == typeof b && ( b = null ) , this . game = a , this . parent = b , this . active = ! 1 , this . visible = ! 1 , this . hasPreUpdate = ! 1 , this . hasUpdate = ! 1 , this . hasPostUpdate = ! 1 , this . hasRender = ! 1 , this . hasPostRender = ! 1 } , b . Plugin . prototype = { preUpdate : function ( ) { } , update : function ( ) { } , render : function ( ) { } , postRender : function ( ) { } , destroy : function ( ) { this . game = null , this . parent = null , this . active = ! 1 , this . visible = ! 1 } } , b . Plugin . prototype . constructor = b . Plugin , b . PluginManager = function ( a ) { this . game = a , this . plugins = [ ] , this . _len = 0 , this . _i = 0 } , b . PluginManager . prototype = { add : function ( a ) { var b = ! 1 ; return "function" == typeof a ? a = new a ( this . game , this . _parent ) : ( a . game = this . game , a . parent = this ) , "function" == typeof a . preUpdate && ( a . hasPreUpdate = ! 0 , b = ! 0 ) , "function" == typeof a . update && ( a . hasUpdate = ! 0 , b = ! 0 ) , "function" == typeof a . postUpdate && ( a . hasPostUpdate = ! 0 , b = ! 0 ) , "function" == typeof a . render && ( a . hasRender = ! 0 , b = ! 0 ) , "function" == typeof a . postRender && ( a . hasPostRender = ! 0 , b = ! 0 ) , b ? ( ( a . hasPreUpdate || a . hasUpdate || a . hasPostUpdate ) && ( a . active = ! 0 ) , ( a . hasRender || a . hasPostRender ) && ( a . visible = ! 0 ) , this . _len = this . plugins . push ( a ) , "function" == typeof a . init && a . init ( ) , a ) : null } , remove : function ( a ) { for ( this . _i = this . _len ; this . _i -- ; ) if ( this . plugins [ this . _i ] === a ) return a . destroy ( ) , this . plugins . splice ( this . _i , 1 ) , void this . _len -- } , removeAll : function ( ) { for ( this . _i = this . _len ; this . _i -- ; ) this . plugins [ this . _i ] . destroy ( ) ; this . plugins . length = 0 , this . _len = 0 } , preUpdate : function ( ) { for ( this . _i = this . _len ; this . _i -- ; ) this . plugins [ this . _i ] . active && this . plugins [ this . _i ] . hasPreUpdate && this . plugins [ this . _i ] . preUpdate ( ) } , update : function ( ) { for ( this . _i = this . _len ; this . _i -- ; ) this . plugins [ this . _i ] . active && this . plugins [ this . _i ] . hasUpdate && this . plugins [ this . _i ] . update ( ) } , postUpdate : function ( ) { for ( this . _i = this . _len ; this . _i -- ; ) this . plugins [ this . _i ] . active && this . plugins [ this . _i ] . hasPostUpdate && this . plugins [ this . _i ] . postUpdate ( ) } , render : function ( ) { for ( this . _i = this . _len ; this . _i -- ; ) this . plugins [ this . _i ] . visible && this . plugins [ this . _i ] . hasRender && this . plugins [ this . _i ] . render ( ) } , postRender : function ( ) { for ( this . _i = this . _len ; this . _i -- ; ) this . plugins [ this . _i ] . visible && this . plugins [ this . _i ] . hasPostRender && this . plugins [ this . _i ] . postRender ( ) } , destroy : function ( ) { this . removeAll ( ) , this . game = null } } , b . PluginManager . prototype . constructor = b . PluginManager , b . Stage = function ( a , c , d ) { this . game = a , this . offset = new b . Point , PIXI . Stage . call ( this , 0 , ! 1 ) , this . name = "_stage_root" , this . interactive = ! 1 , this . disableVisibilityChange = ! 1 , this . checkOffsetInterval = 2500 , this . exists = ! 0 , this . currentRenderOrderID = 0 , this . _hiddenVar = "hidden" , this . _nextOffsetCheck = 0 , this . _backgroundColor = 0 , a . config ? this . parseConfig ( a . config ) : ( this . game . canvas = b . Canvas . create ( c , d ) , this . game . canvas . style [ "-webkit-full-screen" ] = "width: 100%; height: 100%" ) } , b . Stage . prototype = Object . create ( PIXI . Stage . prototype ) , b . Stage . prototype . constructor = b . Stage , b . Stage . prototype . preUpdate = function ( ) { this . currentRenderOrderID = 0 ; for ( var a = this . children . length , b = 0 ; a > b ; b ++ ) this . children [ b ] . preUpdate ( ) } , b . Stage . prototype . update = function ( ) { for ( var a = this . children . length ; a --
var d = null ; a . state && ( d = a . state ) , this . state = new b . StateManager ( this , d ) } , boot : function ( ) { this . isBooted || ( document . body ? ( document . removeEventListener ( "DOMContentLoaded" , this . _onBoot ) , window . removeEventListener ( "load" , this . _onBoot ) , this . onPause = new b . Signal , this . onResume = new b . Signal , this . onBlur = new b . Signal , this . onFocus = new b . Signal , this . isBooted = ! 0 , this . device = new b . Device ( this ) , this . math = b . Math , this . stage = new b . Stage ( this , this . width , this . height ) , this . scale = new b . ScaleManager ( this , this . width , this . height ) , this . setUpRenderer ( ) , this . device . checkFullScreenSupport ( ) , this . world = new b . World ( this ) , this . add = new b . GameObjectFactory ( this ) , this . make = new b . GameObjectCreator ( this ) , this . cache = new b . Cache ( this ) , this . load = new b . Loader ( this ) , this . time = new b . Time ( this ) , this . tweens = new b . TweenManager ( this ) , this . input = new b . Input ( this ) , this . sound = new b . SoundManager ( this ) , this . physics = new b . Physics ( this , this . physicsConfig ) , this . particles = new b . Particles ( this ) , this . plugins = new b . PluginManager ( this ) , this . net = new b . Net ( this ) , this . debug = new b . Utils . Debug ( this ) , this . time . boot ( ) , this . stage . boot ( ) , this . world . boot ( ) , this . input . boot ( ) , this . sound . boot ( ) , this . state . boot ( ) , this . debug . boot ( ) , this . showDebugHeader ( ) , this . isRunning = ! 0 , this . raf = this . config && this . config . forceSetTimeOut ? new b . RequestAnimationFrame ( this , this . config . forceSetTimeOut ) : new b . RequestAnimationFrame ( this , ! 1 ) , this . raf . start ( ) ) : window . setTimeout ( this . _onBoot , 20 ) ) } , showDebugHeader : function ( ) { var a = b . DEV _VERSION , c = "Canvas" , d = "HTML Audio" , e = 1 ; if ( this . renderType === b . WEBGL ? ( c = "WebGL" , e ++ ) : this . renderType == b . HEADLESS && ( c = "Headless" ) , this . device . webAudio && ( d = "WebAudio" , e ++ ) , this . device . chrome ) { for ( var f = [ "%c %c %c Phaser v" + a + " - " + c + " - " + d + " %c %c http://phaser.io %c %c ♥%c♥%c♥ " , "background: #0cf300" , "background: #00bc17" , "color: #ffffff; background: #00711f;" , "background: #00bc17" , "background: #0cf300" , "background: #00bc17" ] , g = 0 ; 3 > g ; g ++ ) f . push ( e > g ? "color: #ff2424; background: #fff" : "color: #959595; background: #fff" ) ; console . log . apply ( console , f ) } else console . log ( "Phaser v" + a + " - Renderer: " + c + " - Audio: " + d + " - http://phaser.io" ) } , setUpRenderer : function ( ) { if ( this . device . trident && ( this . renderType = b . CANVAS ) , this . renderType === b . HEADLESS || this . renderType === b . CANVAS || this . renderType === b . AUTO && this . device . webGL === ! 1 ) { if ( ! this . device . canvas ) throw new Error ( "Phaser.Game - cannot create Canvas or WebGL context, aborting." ) ; this . renderType === b . AUTO && ( this . renderType = b . CANVAS ) , this . renderer = new PIXI . CanvasRenderer ( this . width , this . height , this . canvas , this . transparent ) , this . context = this . renderer . context } else this . renderType = b . WEBGL , this . renderer = new PIXI . WebGLRenderer ( this . width , this . height , this . canvas , this . transparent , this . antialias ) , this . context = null ; this . renderType !== b . HEADLESS && ( this . stage . smoothed = this . antialias , b . Canvas . addToDOM ( this . canvas , this . parent , ! 0 ) , b . Canvas . setTouchAction ( this . canvas ) ) } , update : function ( a ) { this . time . update ( a ) , this . _paused || this . pendingStep ? this . debug . preUpdate ( ) : ( this . stepping && ( this . pendingStep = ! 0 ) , this . debug . preUpdate ( ) , this . physics . preUpdate ( ) , this . state . preUpdate ( ) , this . plugins . preUpdate ( ) , this . stage . preUpdate ( ) , this . state . update ( ) , this . stage . update ( ) , this . tweens . update ( ) , this . sound . update ( ) , this . input . update ( ) , this . physics . update ( ) , this . particles . update ( ) , this . plugins . update ( ) , this . stage . postUpdate ( ) , this . plugins . postUpdate ( ) ) , this . renderType != b . HEADLESS && ( this . renderer . render ( this . stage ) , this . plugins . render ( ) , this . state . render ( ) , this . plugins . postRender ( ) ) } , enableStep : function ( ) { this . stepping = ! 0 , this . pendingStep = ! 1 , this . stepCount = 0 } , disableStep : function ( ) { this . stepping = ! 1 , this . pendingStep = ! 1 } , step : function ( ) { this . pendingStep = ! 1 , this . stepCount ++ } , destroy : function ( ) { this . raf . stop ( ) , this . input . destroy ( ) , this . state . destroy ( ) , this . physics . destroy ( ) , this . state = null , this . cache = null , this . input = null , this . load = null , this . sound = null , this . stage = null , this . time = null , this . world = null , this . isBooted = ! 1 } , gamePaused : function ( a ) { this . _paused || ( this . _paused = ! 0 , this . time . gamePaused ( ) , this . sound . setMute ( ) , this . onPause . dispatch ( a ) ) } , gameResumed : function ( a ) { this . _paused && ! this . _codePaused
} } , onTouchCancel : function ( a ) { if ( this . event = a , this . touchCancelCallback && this . touchCancelCallback . call ( this . callbackContext , a ) , ! this . game . input . disabled && ! this . disabled ) { this . preventDefault && a . preventDefault ( ) ; for ( var b = 0 ; b < a . changedTouches . length ; b ++ ) this . game . input . stopPointer ( a . changedTouches [ b ] ) } } , onTouchEnter : function ( a ) { this . event = a , this . touchEnterCallback && this . touchEnterCallback . call ( this . callbackContext , a ) , this . game . input . disabled || this . disabled || this . preventDefault && a . preventDefault ( ) } , onTouchLeave : function ( a ) { this . event = a , this . touchLeaveCallback && this . touchLeaveCallback . call ( this . callbackContext , a ) , this . preventDefault && a . preventDefault ( ) } , onTouchMove : function ( a ) { this . event = a , this . touchMoveCallback && this . touchMoveCallback . call ( this . callbackContext , a ) , this . preventDefault && a . preventDefault ( ) ; for ( var b = 0 ; b < a . changedTouches . length ; b ++ ) this . game . input . updatePointer ( a . changedTouches [ b ] ) } , onTouchEnd : function ( a ) { this . event = a , this . touchEndCallback && this . touchEndCallback . call ( this . callbackContext , a ) , this . preventDefault && a . preventDefault ( ) ; for ( var b = 0 ; b < a . changedTouches . length ; b ++ ) this . game . input . stopPointer ( a . changedTouches [ b ] ) } , stop : function ( ) { this . game . device . touch && ( this . game . canvas . removeEventListener ( "touchstart" , this . _onTouchStart ) , this . game . canvas . removeEventListener ( "touchmove" , this . _onTouchMove ) , this . game . canvas . removeEventListener ( "touchend" , this . _onTouchEnd ) , this . game . canvas . removeEventListener ( "touchenter" , this . _onTouchEnter ) , this . game . canvas . removeEventListener ( "touchleave" , this . _onTouchLeave ) , this . game . canvas . removeEventListener ( "touchcancel" , this . _onTouchCancel ) ) } } , b . Touch . prototype . constructor = b . Touch , b . Gamepad = function ( a ) { this . game = a , this . _gamepads = [ new b . SinglePad ( a , this ) , new b . SinglePad ( a , this ) , new b . SinglePad ( a , this ) , new b . SinglePad ( a , this ) ] , this . _gamepadIndexMap = { } , this . _rawPads = [ ] , this . _active = ! 1 , this . disabled = ! 1 , 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 } , b . 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 ) } , start : function ( ) { if ( ! this . _active ) { this . _active = ! 0 ; var a = this ; this . _ongamepadconnected = function ( b ) { var c = b . gamepad ; a . _rawPads . push ( c ) , a . _gamepads [ c . index ] . connect ( c ) } , window . addEventListener ( "gamepadconnected" , this . _ongamepadconnected , ! 1 ) , this . _ongamepaddisconnected = function ( b ) { var c = b . gamepad ; for ( var d in a . _rawPads ) a . _rawPads [ d ] . index === c . index && a . _rawPads . splice ( d , 1 ) ; a . _gamepads [ c . index ] . disconnect ( ) } , window . addEventListener ( "gamepaddisconnected" , this . _ongamepaddisconnected , ! 1 ) } } , update : function ( ) { this . _pollGamepads ( ) ; for ( var a = 0 ; a < this . _gamepads . length ; a ++ ) this . _gamepads [ a ] . _connected && this . _gamepads [ a ] . pollStatus ( ) } , _pollGamepads : function ( ) { var a = navigator . getGamepads || navigator . webkitGetGamepads && navigator . webkitGetGamepads ( ) || navigator . webkitGamepads ; if ( a ) { this . _rawPads = [ ] ; for ( var b = ! 1 , c = 0 ; c < a . length && ( typeof a [ c ] !== this . _prevRawGamepadTypes [ c ] && ( b = ! 0 , this . _prevRawGamepadTypes [ c ] = typeof a [ c ] ) , a [ c ] && this . _rawPads . push ( a [ c ] ) , 3 !== c ) ; c ++ ) ; if ( b ) { for ( var d , e = { rawIndices : { } , padIndices : { } } , f = 0 ; f < this . _gamepads . length ; f ++ ) if ( d = this . _gamepads [ f ] , d . connected ) for ( var g = 0 ; g < this . _rawPads . length ; g ++ ) this . _rawPads [ g ] . index === d . index && ( e . rawIndices [ d . index ] = ! 0 , e . padIndices [ f ] = ! 0 ) ; for ( var h = 0 ; h < t
} , b . BitmapData . prototype = { add : function ( a ) { if ( Array . isArray ( a ) ) for ( var b = 0 ; b < a . length ; b ++ ) a [ b ] . loadTexture && a [ b ] . loadTexture ( this ) ; else a . loadTexture ( this ) } , clear : function ( ) { this . context . clearRect ( 0 , 0 , this . width , this . height ) , this . dirty = ! 0 } , resize : function ( a , b ) { ( a !== this . width || b !== this . height ) && ( this . width = a , this . height = b , this . canvas . width = a , this . canvas . height = b , this . textureFrame . width = a , this . textureFrame . height = b , this . imageData = this . context . getImageData ( 0 , 0 , a , b ) ) , this . dirty = ! 0 } , refreshBuffer : function ( ) { this . imageData = this . context . getImageData ( 0 , 0 , this . width , this . height ) , this . pixels = new Int32Array ( this . imageData . data . buffer ) } , setPixel32 : function ( a , b , c , d , e , f ) { a >= 0 && a <= this . width && b >= 0 && b <= this . height && ( this . pixels [ b * this . width + a ] = f << 24 | e << 16 | d << 8 | c , this . context . putImageData ( this . imageData , 0 , 0 ) , this . dirty = ! 0 ) } , setPixel : function ( a , b , c , d , e ) { this . setPixel32 ( a , b , c , d , e , 255 ) } , getPixel : function ( a , b ) { return a >= 0 && a <= this . width && b >= 0 && b <= this . height ? this . data32 [ b * this . width + a ] : void 0 } , getPixel32 : function ( a , b ) { return a >= 0 && a <= this . width && b >= 0 && b <= this . height ? this . data32 [ b * this . width + a ] : void 0 } , getPixels : function ( a ) { return this . context . getImageData ( a . x , a . y , a . width , a . height ) } , copyPixels : function ( a , b , c , d ) { "string" == typeof a && ( a = this . game . cache . getImage ( a ) ) , a && this . context . drawImage ( a , b . x , b . y , b . width , b . height , c , d , b . width , b . height ) } , draw : function ( a , b , c ) { "string" == typeof a && ( a = this . game . cache . getImage ( a ) ) , a && this . context . drawImage ( a , 0 , 0 , a . width , a . height , b , c , a . width , a . height ) } , alphaMask : function ( a , b ) { var c = this . context . globalCompositeOperation ; "string" == typeof b && ( b = this . game . cache . getImage ( b ) ) , b && this . context . drawImage ( b , 0 , 0 ) , this . context . globalCompositeOperation = "source-atop" , "string" == typeof a && ( a = this . game . cache . getImage ( a ) ) , a && this . context . drawImage ( a , 0 , 0 ) , this . context . globalCompositeOperation = c } , render : function ( ) { this . game . renderType === b . WEBGL && this . dirty && ( PIXI . updateWebGLTexture ( this . baseTexture , this . game . renderer . gl ) , this . dirty = ! 1 ) } } , b . BitmapData . prototype . constructor = b . BitmapData , b . Sprite = function ( a , c , d , e , f ) { c = c || 0 , d = d || 0 , e = e || null , f = f || null , this . game = a , this . name = "" , this . type = b . SPRITE , this . z = 0 , this . events = new b . Events ( this ) , this . animations = new b . AnimationManager ( this ) , this . key = e , this . _frame = 0 , this . _frameName = "" , PIXI . Sprite . call ( this , PIXI . TextureCache . _ _default ) , this . loadTexture ( e , f ) , this . position . set ( c , d ) , this . world = new b . Point ( c , d ) , this . autoCull = ! 1 , this . input = null , this . body = null , this . health = 1 , this . lifespan = 0 , this . checkWorldBounds = ! 1 , this . outOfBoundsKill = ! 1 , this . debug = ! 1 , this . cameraOffset = new b . Point , this . _cache = [ 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 ] , this . _bounds = new b . Rectangle } , b . Sprite . prototype = Object . create ( PIXI . Sprite . prototype ) , b . Sprite . prototype . constructor = b . Sprite , b . Sprite . prototype . preUpdate = function ( ) { if ( 1 === this . _cache [ 4 ] && this . exists ) return this . world . setTo ( this . parent . position . x + this . position . x , this . parent . position . y + this . position . y ) , this . worldTransform . tx = this . world . x , this . worldTransform . ty = this . world . y , this . _cache [ 0 ] = this . world . x , this . _cache [ 1 ] = this . world . y , this . _cache [ 2 ] = this . rotation , this . body && this . body . preUpdate ( ) , this . _cache [ 4 ] = 0 , ! 1 ; if ( this . _cache [ 0 ] = this . world . x , this . _cache [ 1 ] = this . world . y , this . _cache [ 2 ] = this . rotation , ! this . exists || ! this . parent . exists ) return this . _cache [ 3 ] = - 1 , ! 1 ; if ( this . lifespan > 0 && ( this . lifespan -= this . game . time . elapsed , this . lifespan <= 0 ) ) return this . kill ( ) , ! 1 ; if ( ( this . autoCull || this . checkWorldBounds ) && this . _bounds . copyFrom ( this . getBounds ( ) ) , this . autoCull && ( this . renderable = this . game . world . camera . screenView . intersects ( this . _bounds ) ) , this . checkWorldBounds ) if ( 1 === this . _cache [ 5 ] && this . game . world . bounds . intersects ( this . _bounds ) ) this . _cache [ 5 ] = 0 , this . events . onEnterBounds . dispatch ( this ) ; else if ( 0 === this . _cache [ 5 ] && ! this . game . world . bounds . intersects ( this . _bounds ) && ( this . _cache [ 5 ] = 1 , this . events . onOutOfBounds . dispatch ( this ) , this . outOfBoundsKill ) ) return this . kill ( ) , ! 1 ; this . world . setTo ( this . game . camera . x + this . worldTransform . tx , this . game . camera . y + this . worldTransform . ty ) , this . visible && ( this . _cache [ 3 ] = this . game . stage . currentRenderOrderID ++ ) , this . animations . update ( ) , this . body && this . body . preUpdate ( ) ; for ( var a = 0 , b = this . children . l
} } , Object . defineProperty ( b . BitmapText . prototype , "align" , { get : function ( ) { return this . _align } , set : function ( a ) { a !== this . _align && ( this . _align = a , this . setStyle ( ) ) } } ) , Object . defineProperty ( b . BitmapText . prototype , "tint" , { get : function ( ) { return this . _tint } , set : function ( a ) { a !== this . _tint && ( this . _tint = a , this . dirty = ! 0 ) } } ) , Object . defineProperty ( b . BitmapText . prototype , "angle" , { get : function ( ) { return b . Math . radToDeg ( this . rotation ) } , set : function ( a ) { this . rotation = b . Math . degToRad ( a ) } } ) , Object . defineProperty ( b . BitmapText . prototype , "font" , { get : function ( ) { return this . _font } , set : function ( a ) { a !== this . _font && ( this . _font = a . trim ( ) , this . style . font = this . _fontSize + "px '" + this . _font + "'" , this . dirty = ! 0 ) } } ) , Object . defineProperty ( b . BitmapText . prototype , "fontSize" , { get : function ( ) { return this . _fontSize } , set : function ( a ) { a = parseInt ( a , 10 ) , a !== this . _fontSize && ( this . _fontSize = a , this . style . font = this . _fontSize + "px '" + this . _font + "'" , this . dirty = ! 0 ) } } ) , Object . defineProperty ( b . BitmapText . prototype , "text" , { get : function ( ) { return this . _text } , set : function ( a ) { a !== this . _text && ( this . _text = a . toString ( ) || " " , this . dirty = ! 0 ) } } ) , Object . defineProperty ( b . BitmapText . prototype , "inputEnabled" , { get : function ( ) { return this . input && this . input . enabled } , set : function ( a ) { a ? null === this . input ? ( this . input = new b . InputHandler ( this ) , this . input . start ( ) ) : this . input && ! this . input . enabled && this . input . start ( ) : this . input && this . input . enabled && this . input . stop ( ) } } ) , Object . defineProperty ( b . BitmapText . prototype , "fixedToCamera" , { get : function ( ) { return ! ! this . _cache [ 7 ] } , set : function ( a ) { a ? ( this . _cache [ 7 ] = 1 , this . cameraOffset . set ( this . x , this . y ) ) : this . _cache [ 7 ] = 0 } } ) , b . Button = function ( a , c , d , e , f , g , h , i , j , k ) { c = c || 0 , d = d || 0 , e = e || null , f = f || null , g = g || this , b . Image . call ( this , a , c , d , e , i ) , this . type = b . BUTTON , this . _onOverFrameName = null , this . _onOutFrameName = null , this . _onDownFrameName = null , this . _onUpFrameName = null , this . _onOverFrameID = null , this . _onOutFrameID = null , this . _onDownFrameID = null , this . _onUpFrameID = null , this . onOverSound = null , this . onOutSound = null , this . onDownSound = null , this . onUpSound = null , this . onOverSoundMarker = "" , this . onOutSoundMarker = "" , this . onDownSoundMarker = "" , this . onUpSoundMarker = "" , this . onInputOver = new b . Signal , this . onInputOut = new b . Signal , this . onInputDown = new b . Signal , this . onInputUp = new b . Signal , this . freezeFrames = ! 1 , this . forceOut = ! 1 , this . inputEnabled = ! 0 , this . input . start ( 0 , ! 0 ) , this . setFrames ( h , i , j , k ) , null !== f && this . onInputUp . add ( f , g ) , this . events . onInputOver . add ( this . onInputOverHandler , this ) , this . events . onInputOut . add ( this . onInputOutHandler , this ) , this . events . onInputDown . add ( this . onInputDownHandler , this ) , this . events . onInputUp . add ( this . onInputUpHandler , this ) } , b . Button . prototype = Object . create ( b . Image . prototype ) , b . Button . prototype . constructor = b . Button , b . Button . prototype . clearFrames = function ( ) { this . _onOverFrameName = null , this . _onOverFrameID = null , this . _onOutFrameName = null , this . _onOutFrameID = null , this . _onDownFrameName = null , this . _onDownFrameID = null , this . _onUpFrameName = null , this . _onUpFrameID = null } , b . Button . prototype . setFrames = function ( a , b , c , d ) { this . clearFrames ( ) , null !== a && ( "string" == typeof a ? ( this . _onOverFrameName = a , this . input . pointerOver ( ) && ( this . frameName = a ) ) : ( this . _onOverFrameID = a , this . input . pointerOver ( ) && ( this . frame = a ) ) ) , null !== b && ( "string" == typeof b ? ( this . _onOutFrameName = b , this . input . pointerOver ( ) === ! 1 && ( this . frameName = b ) ) : ( this . _onOutFrameID = b , this . input . pointerOver ( ) === ! 1 && ( this . frame = b ) ) ) , null !== c && ( "string" == typeof c ? ( this . _onDownFrameName = c , this . input . pointerDown ( ) && ( this . frameName = c ) ) : ( this . _onDownFrameID = c , this . input . pointerDown ( ) && ( this . frame = c ) ) ) , null !== d && ( "string" == typeof d ? ( this . _onUpFrameName = d , this . input . pointerUp ( ) && ( this . frameName = d ) ) : ( this . _onUpFrameID = d , this . input . pointerUp ( ) && ( this . frame = d ) ) ) } , b . Button . prototype . setSounds = function ( a , b , c , d , e , f , g , h ) { this . setOverSound ( a , b ) , this . setOutSound ( e , f ) , this . setDownSound ( c , d ) , this . setUpSound ( g , h ) } , b . Button . prototype . setOverSound = function ( a , c ) { this . onOverSound = null , this . onOverSoundMarker = "" , a instanceof b . Sound && ( this . onOverSound = a ) , "string" == typeof c && ( this . onOverSoundMarker = c ) } , b . Button . prototype . setOutSound = function ( a , c ) { this . onOutSound = null , this . onOutSoundMarker = "" , a ins
} , hash : function ( a ) { var b , c , d ; for ( d = 4022871197 , a = a . toString ( ) , c = 0 ; c < a . length ; c ++ ) d += a . charCodeAt ( c ) , b = . 02519603282416938 * d , d = b >>> 0 , b -= d , b *= d , d = b >>> 0 , b -= d , d += 4294967296 * b ; return 2.3283064365386963 e - 10 * ( d >>> 0 ) } , integer : function ( ) { return 4294967296 * this . rnd . apply ( this ) } , frac : function ( ) { return this . rnd . apply ( this ) + 1.1102230246251565 e - 16 * ( 2097152 * this . rnd . apply ( this ) | 0 ) } , real : function ( ) { return this . integer ( ) + this . frac ( ) } , integerInRange : function ( a , b ) { return Math . round ( this . realInRange ( a , b ) ) } , realInRange : function ( a , b ) { return this . frac ( ) * ( b - a ) + a } , normal : function ( ) { return 1 - 2 * this . frac ( ) } , uuid : function ( ) { var a = "" , b = "" ; for ( b = a = "" ; a ++ < 36 ; b += ~ a % 5 | 3 * a & 4 ? ( 15 ^ a ? 8 ^ this . frac ( ) * ( 20 ^ a ? 16 : 4 ) : 4 ) . toString ( 16 ) : "-" ) ; return b } , pick : function ( a ) { return a [ this . integerInRange ( 0 , a . length - 1 ) ] } , weightedPick : function ( a ) { return a [ ~ ~ ( Math . pow ( this . frac ( ) , 2 ) * ( a . length - 1 ) ) ] } , timestamp : function ( a , b ) { return this . realInRange ( a || 9466848e5 , b || 1577862e6 ) } , angle : function ( ) { return this . integerInRange ( - 180 , 180 ) } } , b . RandomDataGenerator . prototype . constructor = b . RandomDataGenerator , b . QuadTree = function ( a , b , c , d , e , f , g ) { this . maxObjects = 10 , this . maxLevels = 4 , this . level = 0 , this . bounds = { } , this . objects = [ ] , this . nodes = [ ] , this . _empty = [ ] , this . reset ( a , b , c , d , e , f , g ) } , b . QuadTree . prototype = { reset : function ( a , b , c , d , e , f , g ) { this . maxObjects = e || 10 , this . maxLevels = f || 4 , this . level = g || 0 , this . bounds = { x : Math . round ( a ) , y : Math . round ( b ) , width : c , height : d , subWidth : Math . floor ( c / 2 ) , subHeight : Math . floor ( d / 2 ) , right : Math . round ( a ) + Math . floor ( c / 2 ) , bottom : Math . round ( b ) + Math . floor ( d / 2 ) } , this . objects . length = 0 , this . nodes . length = 0 } , populate : function ( a ) { a . forEach ( this . populateHandler , this , ! 0 ) } , populateHandler : function ( a ) { a . body && a . exists && this . insert ( a . body ) } , split : function ( ) { this . level ++ , this . nodes [ 0 ] = new b . QuadTree ( this . bounds . right , this . bounds . y , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) , this . nodes [ 1 ] = new b . QuadTree ( this . bounds . x , this . bounds . y , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) , this . nodes [ 2 ] = new b . QuadTree ( this . bounds . x , this . bounds . bottom , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) , this . nodes [ 3 ] = new b . QuadTree ( this . bounds . right , this . bounds . bottom , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) } , insert : function ( a ) { var b , c = 0 ; if ( null != this . nodes [ 0 ] && ( b = this . getIndex ( a ) , - 1 !== b ) ) return void this . nodes [ b ] . insert ( a ) ; if ( this . objects . push ( a ) , this . objects . length > this . maxObjects && this . level < this . maxLevels ) for ( null == this . nodes [ 0 ] && this . split ( ) ; c < this . objects . length ; ) b = this . getIndex ( this . objects [ c ] ) , - 1 !== b ? this . nodes [ b ] . insert ( this . objects . splice ( c , 1 ) [ 0 ] ) : c ++ } , getIndex : function ( a ) { var b = - 1 ; return a . x < this . bounds . right && a . right < this . bounds . right ? a . y < this . bounds . bottom && a . bottom < this . bounds . bottom ? b = 1 : a . y > this . bounds . bottom && ( b = 2 ) : a . x > this . bounds . right && ( a . y < this . bounds . bottom && a . bottom < this . bounds . bottom ? b = 0 : a . y > this . bounds . bottom && ( b = 3 ) ) , b } , retrieve : function ( a ) { if ( ! a . body ) return this . _empty ; var b = this . objects , c = this . getIndex ( a . body ) ; return this . nodes [ 0 ] && ( - 1 !== c ? b = b . concat ( this . nodes [ c ] . retrieve ( a ) ) : ( b = b . concat ( this . nodes [ 0 ] . retrieve ( a ) ) , b = b . concat ( this . nodes [ 1 ] . retrieve ( a ) ) , b = b . concat ( this . nodes [ 2 ] . retrieve ( a ) ) , b = b . concat ( this . nodes [ 3 ] . retrieve ( a ) ) ) ) , b } , clear : function ( ) { this . objects . length = 0 ; for ( var a = this . nodes . length ; a -- ; ) this . nodes [ a ] . clear ( ) , this . nodes . splice ( a , 1 ) ; this . nodes . length = 0 } } , b . QuadTree . prototype . constructor = b . QuadTree , b . Net = function ( a ) { this . game = a } , b . Net . prototype = { getHostName : function ( ) { return window . location && window . location . hostname ? window . location . hostname : null } , checkDomainName : function ( a ) { return - 1 !== window . location . hostname . indexOf ( a ) } , updateQueryString : function ( a , b , c , d ) { "undefined" == typeof c && ( c = ! 1 ) , ( "undefined" == typeof d || "" === d ) && ( d = window . location . href ) ; var e = "" , f = new RegExp ( "([?|&])" + a + "=.*?(&|#|$)(.*)" , "gi" ) ; if ( f . test ( d ) ) e = "undefined" != typeof b && null !== b ? d . replace ( f , "$1" + a + "=" + b + "$2$3" ) : d . replace ( f , "$1$3" ) . replace ( /(&|\?)$/ , "" ) ; else if ( "undefined" != typeof b && null !== b ) { var g = - 1 !== d . indexOf ( "?" ) ? "&" : "?" , h = d . split ( "#" ) ; d = h [ 0 ] + g + a + "=" + b
} return f } , JSONDataHash : function ( a , c , d ) { if ( ! c . frames ) return console . warn ( "Phaser.AnimationParser.JSONDataHash: Invalid Texture Atlas JSON given, missing 'frames' object" ) , void console . log ( c ) ; var e , f = new b . FrameData , g = c . frames , h = 0 ; for ( var i in g ) { var j = a . rnd . uuid ( ) ; e = f . addFrame ( new b . Frame ( h , g [ i ] . frame . x , g [ i ] . frame . y , g [ i ] . frame . w , g [ i ] . frame . h , i , j ) ) , PIXI . TextureCache [ j ] = new PIXI . Texture ( PIXI . BaseTextureCache [ d ] , { x : g [ i ] . frame . x , y : g [ i ] . frame . y , width : g [ i ] . frame . w , height : g [ i ] . frame . h } ) , g [ i ] . trimmed && ( e . setTrim ( g [ i ] . trimmed , g [ i ] . sourceSize . w , g [ i ] . sourceSize . h , g [ i ] . spriteSourceSize . x , g [ i ] . spriteSourceSize . y , g [ i ] . spriteSourceSize . w , g [ i ] . spriteSourceSize . h ) , PIXI . TextureCache [ j ] . trim = new b . Rectangle ( g [ i ] . spriteSourceSize . x , g [ i ] . spriteSourceSize . y , g [ i ] . sourceSize . w , g [ i ] . sourceSize . h ) ) , h ++ } return f } , XMLData : function ( a , c , d ) { if ( ! c . getElementsByTagName ( "TextureAtlas" ) ) return void console . warn ( "Phaser.AnimationParser.XMLData: Invalid Texture Atlas XML given, missing <TextureAtlas> tag" ) ; for ( var e , f , g , h , i , j , k , l , m , n , o , p , q = new b . FrameData , r = c . getElementsByTagName ( "SubTexture" ) , s = 0 ; s < r . length ; s ++ ) f = a . rnd . uuid ( ) , h = r [ s ] . attributes , g = h . name . nodeValue , i = parseInt ( h . x . nodeValue , 10 ) , j = parseInt ( h . y . nodeValue , 10 ) , k = parseInt ( h . width . nodeValue , 10 ) , l = parseInt ( h . height . nodeValue , 10 ) , m = null , n = null , h . frameX && ( m = Math . abs ( parseInt ( h . frameX . nodeValue , 10 ) ) , n = Math . abs ( parseInt ( h . frameY . nodeValue , 10 ) ) , o = parseInt ( h . frameWidth . nodeValue , 10 ) , p = parseInt ( h . frameHeight . nodeValue , 10 ) ) , e = q . addFrame ( new b . Frame ( s , i , j , k , l , g , f ) ) , PIXI . TextureCache [ f ] = new PIXI . Texture ( PIXI . BaseTextureCache [ d ] , { x : i , y : j , width : k , height : l } ) , ( null !== m || null !== n ) && ( e . setTrim ( ! 0 , k , l , m , n , o , p ) , PIXI . TextureCache [ f ] . trim = new b . Rectangle ( m , n , k , l ) ) ; return q } } , b . Cache = function ( a ) { this . game = a , this . _canvases = { } , this . _images = { } , this . _textures = { } , this . _sounds = { } , this . _text = { } , this . _json = { } , this . _physics = { } , this . _tilemaps = { } , this . _binary = { } , this . _bitmapDatas = { } , this . _bitmapFont = { } , this . addDefaultImage ( ) , this . addMissingImage ( ) , this . onSoundUnlock = new b . Signal } , b . Cache . CANVAS = 1 , b . Cache . IMAGE = 2 , b . Cache . TEXTURE = 3 , b . Cache . SOUND = 4 , b . Cache . TEXT = 5 , b . Cache . PHYSICS = 6 , b . Cache . TILEMAP = 7 , b . Cache . BINARY = 8 , b . Cache . BITMAPDATA = 9 , b . Cache . BITMAPFONT = 10 , b . Cache . JSON = 11 , b . Cache . prototype = { addCanvas : function ( a , b , c ) { this . _canvases [ a ] = { canvas : b , context : c } } , addBinary : function ( a , b ) { this . _binary [ a ] = b } , addBitmapData : function ( a , b ) { return this . _bitmapDatas [ a ] = b , b } , addRenderTexture : function ( a , c ) { var d = new b . Frame ( 0 , 0 , 0 , c . width , c . height , "" , "" ) ; this . _textures [ a ] = { texture : c , frame : d } } , addSpriteSheet : function ( a , c , d , e , f , g , h , i ) { this . _images [ a ] = { url : c , data : d , spriteSheet : ! 0 , frameWidth : e , frameHeight : f , margin : h , spacing : i } , PIXI . BaseTextureCache [ a ] = new PIXI . BaseTexture ( d ) , PIXI . TextureCache [ a ] = new PIXI . Texture ( PIXI . BaseTextureCache [ a ] ) , this . _images [ a ] . frameData = b . AnimationParser . spriteSheet ( this . game , a , e , f , g , h , i ) } , addTilemap : function ( a , b , c , d ) { this . _tilemaps [ a ] = { url : b , data : c , format : d } } , addTextureAtlas : function ( a , c , d , e , f ) { this . _images [ a ] = { url : c , data : d , spriteSheet : ! 0 } , PIXI . BaseTextureCache [ a ] = new PIXI . BaseTexture ( d ) , PIXI . TextureCache [ a ] = new PIXI . Texture ( PIXI . BaseTextureCache [ a ] ) , f == b . Loader . TEXTURE _ATLAS _JSON _ARRAY ? this . _images [ a ] . frameData = b . AnimationParser . JSONData ( this . game , e , a ) : f == b . Loader . TEXTURE _ATLAS _JSON _HASH ? this . _images [ a ] . frameData = b . AnimationParser . JSONDataHash ( this . game , e , a ) : f == b . Loader . TEXTURE _ATLAS _XML _STARLING && ( this . _images [ a ] . frameData = b . AnimationParser . XMLData ( this . game , e , a ) ) } , addBitmapFont : function ( a , c , d , e , f , g ) { this . _images [ a ] = { url : c , data : d , spriteSheet : ! 0 } , PIXI . BaseTextureCache [ a ] = new PIXI . BaseTexture ( d ) , PIXI . TextureCache [ a ] = new PIXI . Texture ( PIXI . BaseTextureCache [ a ] ) , b . LoaderParser . bitmapFont ( this . game , e , a , f , g ) } , addPhysicsData : function ( a , b , c , d ) { this . _physics [ a ] = { url : b , data : c , format : d } } , addDefaultImage : function ( ) { var a = new Image ; a . src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAABVJREFUeF7NwIEAAAAAgKD9qdeocAMAoAABm3DkcAAAAABJRU5ErkJggg==" , this . _images . _ _default = { url : null , data : a , spriteSheet : ! 1 } , this . _images . _ _default . frame = new b . Frame ( 0 , 0 , 0 , 32 , 32 , "" , "" ) , PIXI . BaseTextureCache . _ _
var a = this . currentMarker ; "" !== this . currentMarker && this . onMarkerComplete . dispatch ( this . currentMarker , this ) , this . currentMarker = "" , this . onStop . dispatch ( this , a ) } , destroy : function ( a ) { "undefined" == typeof a && ( a = ! 0 ) , this . stop ( ) , a && this . game . sound . remove ( this ) , this . markers = { } , this . context = null , this . _buffer = null , this . externalNode = null , this . onDecoded . dispose ( ) , this . onPlay . dispose ( ) , this . onPause . dispose ( ) , this . onResume . dispose ( ) , this . onLoop . dispose ( ) , this . onStop . dispose ( ) , this . onMute . dispose ( ) , this . onMarkerComplete . dispose ( ) } } , b . Sound . prototype . constructor = b . Sound , Object . defineProperty ( b . Sound . prototype , "isDecoding" , { get : function ( ) { return this . game . cache . getSound ( this . key ) . isDecoding } } ) , Object . defineProperty ( b . Sound . prototype , "isDecoded" , { get : function ( ) { return this . game . cache . isSoundDecoded ( this . key ) } } ) , Object . defineProperty ( b . Sound . prototype , "mute" , { get : function ( ) { return this . _muted } , set : function ( a ) { a = a || null , a ? ( this . _muted = ! 0 , this . usingWebAudio ? ( this . _muteVolume = this . gainNode . gain . value , this . gainNode . gain . value = 0 ) : this . usingAudioTag && this . _sound && ( this . _muteVolume = this . _sound . volume , this . _sound . volume = 0 ) ) : ( this . _muted = ! 1 , this . usingWebAudio ? this . gainNode . gain . value = this . _muteVolume : this . usingAudioTag && this . _sound && ( this . _sound . volume = this . _muteVolume ) ) , this . onMute . dispatch ( this ) } } ) , Object . defineProperty ( b . Sound . prototype , "volume" , { get : function ( ) { return this . _volume } , set : function ( a ) { this . usingWebAudio ? ( this . _volume = a , this . gainNode . gain . value = a ) : this . usingAudioTag && this . _sound && a >= 0 && 1 >= a && ( this . _volume = a , this . _sound . volume = a ) } } ) , b . SoundManager = function ( a ) { this . game = a , this . onSoundDecode = new b . Signal , this . _codeMuted = ! 1 , this . _muted = ! 1 , this . _unlockSource = null , this . _volume = 1 , this . _sounds = [ ] , this . context = null , this . usingWebAudio = ! 0 , this . usingAudioTag = ! 1 , this . noAudio = ! 1 , this . connectToMaster = ! 0 , this . touchLocked = ! 1 , this . channels = 32 } , b . SoundManager . prototype = { boot : function ( ) { if ( this . game . device . iOS && this . game . device . webAudio === ! 1 && ( this . channels = 1 ) , this . game . device . iOS || window . PhaserGlobal && window . PhaserGlobal . fakeiOSTouchLock ? ( this . game . input . touch . callbackContext = this , this . game . input . touch . touchStartCallback = this . unlock , this . game . input . mouse . callbackContext = this , this . game . input . mouse . mouseDownCallback = this . unlock , this . touchLocked = ! 0 ) : this . touchLocked = ! 1 , window . PhaserGlobal ) { if ( window . PhaserGlobal . disableAudio === ! 0 ) return this . usingWebAudio = ! 1 , void ( this . noAudio = ! 0 ) ; if ( window . PhaserGlobal . disableWebAudio === ! 0 ) return this . usingWebAudio = ! 1 , this . usingAudioTag = ! 0 , void ( this . noAudio = ! 1 ) } if ( window . AudioContext ) try { this . context = new window . AudioContext } catch ( a ) { this . context = null , this . usingWebAudio = ! 1 , this . noAudio = ! 0 } else if ( window . webkitAudioContext ) try { this . context = new window . webkitAudioContext } catch ( a ) { this . context = null , this . usingWebAudio = ! 1 , this . noAudio = ! 0 } window . Audio && null === this . context && ( this . usingWebAudio = ! 1 , this . usingAudioTag = ! 0 , this . noAudio = ! 1 ) , null !== this . context && ( this . masterGain = "undefined" == typeof this . context . createGain ? this . context . createGainNode ( ) : this . context . createGain ( ) , this . masterGain . gain . value = 1 , this . masterGain . connect ( this . context . destination ) ) } , unlock : function ( ) { if ( this . touchLocked !== ! 1 ) if ( this . game . device . webAudio === ! 1 || window . PhaserGlobal && window . PhaserGlobal . disableWebAudio === ! 0 ) this . touchLocked = ! 1 , this . _unlockSource = null , this . game . input . touch . callbackContext = null , this . game . input . touch . touchStartCallback = null , this . game . input . mouse . callbackContext = null , this . game . input . mouse . mouseDownCallback = null ; else { var a = this . context . createBuffer ( 1 , 1 , 22050 ) ; this . _unlockSource = this . context . createBufferSource ( ) , this . _unlockSource . buffer = a , this . _unlockSource . connect ( this . context . destination ) , this . _unlockSource . noteOn ( 0 ) } } , stopAll : function ( ) { for ( var a = 0 ; a < this . _sounds . length ; a ++ ) this . _sounds [ a ] && this . _sounds [ a ] . stop ( ) } , pauseAll : function ( ) { for ( var a = 0 ; a < this . _sounds . length ; a ++ ) this . _sounds [ a ] && this . _sounds [ a ] . pause ( ) } , resumeAll : function ( ) { for ( var a = 0 ; a < this . _sounds . length ; a ++ ) this . _sounds [ a ] && this . _sounds [ a ] . resume ( ) } , decode : function ( a , b ) { b = b || null ; var c = this . game . cache . getSoundData ( a ) ; if ( c && this . game . cache . isSoundDecoded ( a ) === ! 1 ) { this . game . ca
} , accelerateToPointer : function ( a , b , c , d , e ) { return "undefined" == typeof c && ( c = 60 ) , "undefined" == typeof b && ( b = this . game . input . activePointer ) , "undefined" == typeof d && ( d = 1e3 ) , "undefined" == typeof e && ( e = 1e3 ) , this . _angle = this . angleToPointer ( a , b ) , a . body . acceleration . setTo ( Math . cos ( this . _angle ) * c , Math . sin ( this . _angle ) * c ) , a . body . maxVelocity . setTo ( d , e ) , this . _angle } , accelerateToXY : function ( a , b , c , d , e , f ) { return "undefined" == typeof d && ( d = 60 ) , "undefined" == typeof e && ( e = 1e3 ) , "undefined" == typeof f && ( f = 1e3 ) , this . _angle = this . angleToXY ( a , b , c ) , a . body . acceleration . setTo ( Math . cos ( this . _angle ) * d , Math . sin ( this . _angle ) * d ) , a . body . maxVelocity . setTo ( e , f ) , this . _angle } , distanceBetween : function ( a , b ) { return this . _dx = a . x - b . x , this . _dy = a . y - b . y , Math . sqrt ( this . _dx * this . _dx + this . _dy * this . _dy ) } , distanceToXY : function ( a , b , c ) { return this . _dx = a . x - b , this . _dy = a . y - c , Math . sqrt ( this . _dx * this . _dx + this . _dy * this . _dy ) } , distanceToPointer : function ( a , b ) { return b = b || this . game . input . activePointer , this . _dx = a . x - b . x , this . _dy = a . y - b . y , Math . sqrt ( this . _dx * this . _dx + this . _dy * this . _dy ) } , angleBetween : function ( a , b ) { return this . _dx = b . x - a . x , this . _dy = b . y - a . y , Math . atan2 ( this . _dy , this . _dx ) } , angleToXY : function ( a , b , c ) { return this . _dx = b - a . x , this . _dy = c - a . y , Math . atan2 ( this . _dy , this . _dx ) } , angleToPointer : function ( a , b ) { return b = b || this . game . input . activePointer , this . _dx = b . worldX - a . x , this . _dy = b . worldY - a . y , Math . atan2 ( this . _dy , this . _dx ) } } , b . Physics . Arcade . Body = function ( a ) { this . sprite = a , this . game = a . game , this . type = b . Physics . ARCADE , this . offset = new b . Point , this . position = new b . Point ( a . x , a . y ) , this . prev = new b . Point ( this . position . x , this . position . y ) , this . allowRotation = ! 0 , this . rotation = a . rotation , this . preRotation = a . rotation , this . sourceWidth = a . texture . frame . width , this . sourceHeight = a . texture . frame . height , this . width = a . width , this . height = a . height , this . halfWidth = Math . abs ( a . width / 2 ) , this . halfHeight = Math . abs ( a . height / 2 ) , this . center = new b . Point ( a . x + this . halfWidth , a . y + this . halfHeight ) , this . velocity = new b . Point , this . newVelocity = new b . Point ( 0 , 0 ) , this . deltaMax = new b . Point ( 0 , 0 ) , this . acceleration = new b . Point , this . drag = new b . Point , this . allowGravity = ! 0 , this . gravity = new b . Point ( 0 , 0 ) , this . bounce = new b . Point , this . maxVelocity = new b . Point ( 1e4 , 1e4 ) , this . angularVelocity = 0 , this . angularAcceleration = 0 , this . angularDrag = 0 , this . maxAngular = 1e3 , this . mass = 1 , this . angle = 0 , this . speed = 0 , this . facing = b . NONE , this . immovable = ! 1 , this . moves = ! 0 , this . customSeparateX = ! 1 , this . customSeparateY = ! 1 , this . overlapX = 0 , this . overlapY = 0 , this . embedded = ! 1 , this . collideWorldBounds = ! 1 , this . checkCollision = { none : ! 1 , any : ! 0 , up : ! 0 , down : ! 0 , left : ! 0 , right : ! 0 } , this . touching = { none : ! 0 , up : ! 1 , down : ! 1 , left : ! 1 , right : ! 1 } , this . wasTouching = { none : ! 0 , up : ! 1 , down : ! 1 , left : ! 1 , right : ! 1 } , this . blocked = { up : ! 1 , down : ! 1 , left : ! 1 , right : ! 1 } , this . tilePadding = new b . Point , this . phase = 0 , this . _reset = ! 0 , this . _sx = a . scale . x , this . _sy = a . scale . y , this . _dx = 0 , this . _dy = 0 } , b . Physics . Arcade . Body . prototype = { updateBounds : function ( ) { var a = Math . abs ( this . sprite . scale . x ) , b = Math . abs ( this . sprite . scale . y ) ; ( a !== this . _sx || b !== this . _sy ) && ( this . width = this . sourceWidth * a , this . height = this . sourceHeight * b , this . halfWidth = Math . floor ( this . width / 2 ) , this . halfHeight = Math . floor ( this . height / 2 ) , this . _sx = a , this . _sy = b , this . center . setTo ( this . position . x + this . halfWidth , this . position . y + this . halfHeight ) , this . _reset = ! 0 ) } , preUpdate : function ( ) { this . phase = 1 , this . wasTouching . none = this . touching . none , this . wasTouching . up = this . touching . up , this . wasTouching . down = this . touching . down , this . wasTouching . left = this . touching . left , this . wasTouching . right = this . touching . right , this . touching . none = ! 0 , this . touching . up = ! 1 , this . touching . down = ! 1 , this . touching . left = ! 1 , this . touching . right = ! 1 , this . blocked . up = ! 1 , this . blocked . down = ! 1 , this . blocked . left = ! 1 , this . blocked . right = ! 1 , this . embedded = ! 1 , this . updateBounds ( ) , this . position . x = this . sprite . world . x - this . sprite . anchor . x * this . width + this . offset . x , this . position . y = this . sprite . world . y - this . sprite . anchor . y * this . height + this . offset . y , this . rotation = this . sprite . angle , this . preRotation = this . rotation , ( this . _reset || 1 === this . sprite . _cache [ 4 ] ) && ( this . prev . x = this . position . x , this . prev . y = this . position . y ) , this . moves && ( this . game . physics . arcade . updateMotion ( this ) , this . newVelocit
} , b . TilemapLayer . prototype . _fixY = function ( a ) { return 0 > a && ( a = 0 ) , 1 === this . scrollFactorY ? a : this . _mc . y + ( a - this . _mc . y / this . scrollFactorY ) } , b . TilemapLayer . prototype . _unfixY = function ( a ) { return 1 === this . scrollFactorY ? a : this . _mc . y / this . scrollFactorY + ( a - this . _mc . y ) } , b . TilemapLayer . prototype . getTileX = function ( a ) { return this . game . math . snapToFloor ( this . _fixX ( a ) , this . map . tileWidth ) / this . map . tileWidth } , b . TilemapLayer . prototype . getTileY = function ( a ) { return this . game . math . snapToFloor ( this . _fixY ( a ) , this . map . tileHeight ) / this . map . tileHeight } , b . TilemapLayer . prototype . getTileXY = function ( a , b , c ) { return c . x = this . getTileX ( a ) , c . y = this . getTileY ( b ) , c } , b . TilemapLayer . prototype . getRayCastTiles = function ( a , b , c , d ) { ( "undefined" == typeof b || null === b ) && ( b = this . rayStepRate ) , "undefined" == typeof c && ( c = ! 1 ) , "undefined" == typeof d && ( d = ! 1 ) ; var e = this . getTiles ( a . x , a . y , a . width , a . height , c , d ) ; if ( 0 === e . length ) return [ ] ; for ( var f = a . coordinatesOnLine ( b ) , g = f . length , h = [ ] , i = 0 ; i < e . length ; i ++ ) for ( var j = 0 ; g > j ; j ++ ) if ( e [ i ] . containsPoint ( f [ j ] [ 0 ] , f [ j ] [ 1 ] ) ) { h . push ( e [ i ] ) ; break } return h } , b . TilemapLayer . prototype . getTiles = function ( a , b , c , d , e , f ) { "undefined" == typeof e && ( e = ! 1 ) , "undefined" == typeof f && ( f = ! 1 ) , a = this . _fixX ( a ) , b = this . _fixY ( b ) , c > this . layer . widthInPixels && ( c = this . layer . widthInPixels ) , d > this . layer . heightInPixels && ( d = this . layer . heightInPixels ) , this . _mc . tx = this . game . math . snapToFloor ( a , this . _mc . cw ) / this . _mc . cw , this . _mc . ty = this . game . math . snapToFloor ( b , this . _mc . ch ) / this . _mc . ch , this . _mc . tw = ( this . game . math . snapToCeil ( c , this . _mc . cw ) + this . _mc . cw ) / this . _mc . cw , this . _mc . th = ( this . game . math . snapToCeil ( d , this . _mc . ch ) + this . _mc . ch ) / this . _mc . ch , this . _results . length = 0 ; for ( var g = this . _mc . ty ; g < this . _mc . ty + this . _mc . th ; g ++ ) for ( var h = this . _mc . tx ; h < this . _mc . tx + this . _mc . tw ; h ++ ) this . layer . data [ g ] && this . layer . data [ g ] [ h ] && ( ! e && ! f || this . layer . data [ g ] [ h ] . isInteresting ( e , f ) ) && this . _results . push ( this . layer . data [ g ] [ h ] ) ; return this . _results } , b . TilemapLayer . prototype . updateMax = function ( ) { this . _mc . maxX = this . game . math . ceil ( this . canvas . width / this . map . tileWidth ) + 1 , this . _mc . maxY = this . game . math . ceil ( this . canvas . height / this . map . tileHeight ) + 1 , this . layer && ( this . _mc . maxX > this . layer . width && ( this . _mc . maxX = this . layer . width ) , this . _mc . maxY > this . layer . height && ( this . _mc . maxY = this . layer . height ) ) , this . dirty = ! 0 } , b . TilemapLayer . prototype . render = function ( ) { if ( this . layer . dirty && ( this . dirty = ! 0 ) , this . dirty && this . visible ) { this . _mc . prevX = this . _mc . dx , this . _mc . prevY = this . _mc . dy , this . _mc . dx = - ( this . _mc . x - this . _mc . startX * this . map . tileWidth ) , this . _mc . dy = - ( this . _mc . y - this . _mc . startY * this . map . tileHeight ) , this . _mc . tx = this . _mc . dx , this . _mc . ty = this . _mc . dy , this . context . clearRect ( 0 , 0 , this . canvas . width , this . canvas . height ) , this . context . fillStyle = this . tileColor ; var a , c ; this . debug && ( this . context . globalAlpha = this . debugAlpha ) ; for ( var d = this . _mc . startY , e = this . _mc . startY + this . _mc . maxY ; e > d ; d ++ ) { this . _column = this . layer . data [ d ] ; for ( var f = this . _mc . startX , g = this . _mc . startX + this . _mc . maxX ; g > f ; f ++ ) this . _column [ f ] && ( a = this . _column [ f ] , c = this . map . tilesets [ this . map . tiles [ a . index ] [ 2 ] ] , this . debug === ! 1 && a . alpha !== this . context . globalAlpha && ( this . context . globalAlpha = a . alpha ) , c . draw ( this . context , Math . floor ( this . _mc . tx ) , Math . floor ( this . _mc . ty ) , a . index ) , a . debug && ( this . context . fillStyle = "rgba(0, 255, 0, 0.4)" , this . context . fillRect ( Math . floor ( this . _mc . tx ) , Math . floor ( this . _mc . ty ) , this . map . tileWidth , this . map . tileHeight ) ) ) , this . _mc . tx += this . map . tileWidth ; this . _mc . tx = this . _mc . dx , this . _mc . ty += this . map . tileHeight } return this . debug && ( this . context . globalAlpha = 1 , this . renderDebug ( ) ) , this . game . renderType === b . WEBGL && PIXI . updateWebGLTexture ( this . baseTexture , this . game . renderer . gl ) , this . dirty = ! 1 , this . layer . dirty = ! 1 , ! 0 } } , b . TilemapLayer . prototype . renderDebug = function ( ) { this . _mc . tx = this . _mc . dx , this . _mc . ty = this . _mc . dy , this . context . strokeStyle = this . debugColor , this . context . fillStyle = this . debugFillColor ; for ( var a = this . _mc . startY , b = this . _mc . startY + this . _mc . maxY ; b > a ; a ++ ) { this . _column = this . layer . data [ a ] ; for ( var c = this . _mc . startX , d = this . _mc . startX + this . _mc . maxX ; d > c ; c ++ ) { var e = this . _column [ c ] ; e && ( e . faceTop || e . faceBottom || e . faceLeft || e . faceRight ) && ( this . _mc . tx = Math . floor ( this . _mc . tx ) , this . debugFill && this . context . fi
if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _45DEG ) this . type = Phaser . Physics . Ninja . Tile . TYPE _FULL , this . signx = 0 , this . signy = 0 , this . sx = 0 , this . sy = 0 ; else if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _CONCAVE ) if ( this . type = Phaser . Physics . Ninja . Tile . TYPE _45DEG , this . id == Phaser . Physics . Ninja . Tile . SLOPE _45DEGpn ) this . signx = 1 , this . signy = - 1 , this . sx = this . signx / Math . SQRT2 , this . sy = this . signy / Math . SQRT2 ; else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _45DEGnn ) this . signx = - 1 , this . signy = - 1 , this . sx = this . signx / Math . SQRT2 , this . sy = this . signy / Math . SQRT2 ; else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _45DEGnp ) this . signx = - 1 , this . signy = 1 , this . sx = this . signx / Math . SQRT2 , this . sy = this . signy / Math . SQRT2 ; else { if ( this . id != Phaser . Physics . Ninja . Tile . SLOPE _45DEGpp ) return ! 1 ; this . signx = 1 , this . signy = 1 , this . sx = this . signx / Math . SQRT2 , this . sy = this . signy / Math . SQRT2 } else if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _CONVEX ) if ( this . type = Phaser . Physics . Ninja . Tile . TYPE _CONCAVE , this . id == Phaser . Physics . Ninja . Tile . CONCAVEpn ) this . signx = 1 , this . signy = - 1 , this . sx = 0 , this . sy = 0 ; else if ( this . id == Phaser . Physics . Ninja . Tile . CONCAVEnn ) this . signx = - 1 , this . signy = - 1 , this . sx = 0 , this . sy = 0 ; else if ( this . id == Phaser . Physics . Ninja . Tile . CONCAVEnp ) this . signx = - 1 , this . signy = 1 , this . sx = 0 , this . sy = 0 ; else { if ( this . id != Phaser . Physics . Ninja . Tile . CONCAVEpp ) return ! 1 ; this . signx = 1 , this . signy = 1 , this . sx = 0 , this . sy = 0 } else if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _22DEGs ) if ( this . type = Phaser . Physics . Ninja . Tile . TYPE _CONVEX , this . id == Phaser . Physics . Ninja . Tile . CONVEXpn ) this . signx = 1 , this . signy = - 1 , this . sx = 0 , this . sy = 0 ; else if ( this . id == Phaser . Physics . Ninja . Tile . CONVEXnn ) this . signx = - 1 , this . signy = - 1 , this . sx = 0 , this . sy = 0 ; else if ( this . id == Phaser . Physics . Ninja . Tile . CONVEXnp ) this . signx = - 1 , this . signy = 1 , this . sx = 0 , this . sy = 0 ; else { if ( this . id != Phaser . Physics . Ninja . Tile . CONVEXpp ) return ! 1 ; this . signx = 1 , this . signy = 1 , this . sx = 0 , this . sy = 0 } else if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _22DEGb ) if ( this . type = Phaser . Physics . Ninja . Tile . TYPE _22DEGs , this . id == Phaser . Physics . Ninja . Tile . SLOPE _22DEGpnS ) { this . signx = 1 , this . signy = - 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _22DEGnnS ) { this . signx = - 1 , this . signy = - 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _22DEGnpS ) { this . signx = - 1 , this . signy = 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else { if ( this . id != Phaser . Physics . Ninja . Tile . SLOPE _22DEGppS ) return ! 1 ; this . signx = 1 , this . signy = 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _67DEGs ) if ( this . type = Phaser . Physics . Ninja . Tile . TYPE _22DEGb , this . id == Phaser . Physics . Ninja . Tile . SLOPE _22DEGpnB ) { this . signx = 1 , this . signy = - 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _22DEGnnB ) { this . signx = - 1 , this . signy = - 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _22DEGnpB ) { this . signx = - 1 , this . signy = 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else { if ( this . id != Phaser . Physics . Ninja . Tile . SLOPE _22DEGppB ) return ! 1 ; this . signx = 1 , this . signy = 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 1 * this . signx / a , this . sy = 2 * this . signy / a } else if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _67DEGb ) if ( this . type = Phaser . Physics . Ninja . Tile . TYPE _67DEGs , this . id == Phaser . Physics . Ninja . Tile . SLOPE _67DEGpnS ) { this . signx = 1 , this . signy = - 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 2 * this . signx / a , this . sy = 1 * this . signy / a } else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _67DEGnnS ) { this . signx = - 1 , this . signy = - 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 2 * this . signx / a , this . sy = 1 * this . signy / a } else if ( this . id == Phaser . Physics . Ninja . Tile . SLOPE _67DEGnpS ) { this . signx = - 1 , this . signy = 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 2 * this . signx / a , this . sy = 1 * this . signy / a } else { if ( this . id != Phaser . Physics . Ninja . Tile . SLOPE _67DEGppS ) return ! 1 ; this . signx = 1 , this . signy = 1 ; var a = Math . sqrt ( 5 ) ; this . sx = 2 * this . signx / a , this . sy = 1 * this . signy / a } else if ( this . id < Phaser . Physics . Ninja . Tile . TYPE _HALF ) if ( this . type = Phaser . Physics . Ninja . Tile . TYPE _67DEGb , this . id == Phaser . Physics . Ninja . Tile
for ( var i = 0 ; i < d . length ; i ++ ) b . push ( d [ i ] ) ; b . length < f && ( a = b , f = b . length , a . push ( [ this . at ( g ) , this . at ( h ) ] ) ) } return a } , c . prototype . decomp = function ( ) { var a = this . getCutEdges ( ) ; return a . length > 0 ? 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 ; c < a . length ; c ++ ) for ( var d = a [ c ] , e = 0 ; e < b . length ; e ++ ) { var f = b [ e ] , g = f . slice ( d ) ; if ( g ) { b . splice ( e , 1 ) , b . push ( g [ 0 ] , g [ 1 ] ) ; break } } return b } var d = a , c = this . vertices . indexOf ( d [ 0 ] ) , e = this . vertices . indexOf ( d [ 1 ] ) ; return - 1 != c && - 1 != e ? [ this . copy ( c , e ) , this . copy ( e , c ) ] : ! 1 } , c . prototype . isSimple = function ( ) { for ( var a = this . vertices , b = 0 ; b < a . length - 1 ; b ++ ) for ( var c = 0 ; b - 1 > c ; c ++ ) if ( e . segmentsIntersect ( a [ b ] , a [ b + 1 ] , a [ c ] , a [ c + 1 ] ) ) return ! 1 ; for ( var b = 1 ; b < a . length - 2 ; b ++ ) if ( e . segmentsIntersect ( a [ 0 ] , a [ a . length - 1 ] , a [ b ] , a [ b + 1 ] ) ) return ! 1 ; return ! 0 } , c . prototype . quickDecomp = function ( a , b , e , g , h , i ) { h = h || 100 , i = i || 0 , g = g || 25 , a = "undefined" != typeof a ? a : [ ] , b = b || [ ] , e = e || [ ] ; var j = [ 0 , 0 ] , k = [ 0 , 0 ] , l = [ 0 , 0 ] , m = 0 , n = 0 , o = 0 , p = 0 , q = 0 , r = 0 , s = 0 , t = new c , u = new c , v = this , w = this . vertices ; if ( w . length < 3 ) return a ; if ( i ++ , i > h ) return console . warn ( "quickDecomp: max level (" + h + ") reached." ) , a ; for ( var x = 0 ; x < this . vertices . length ; ++ x ) if ( v . isReflex ( x ) ) { b . push ( v . vertices [ x ] ) , m = n = Number . MAX _VALUE ; for ( var y = 0 ; y < this . vertices . length ; ++ y ) f . left ( v . at ( x - 1 ) , v . at ( x ) , v . at ( y ) ) && f . rightOn ( v . at ( x - 1 ) , v . at ( x ) , v . at ( y - 1 ) ) && ( l = d ( v . at ( x - 1 ) , v . at ( x ) , v . at ( y ) , v . at ( y - 1 ) ) , f . right ( v . at ( x + 1 ) , v . at ( x ) , l ) && ( o = f . sqdist ( v . vertices [ x ] , l ) , n > o && ( 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 . length < u . vertices . length ? ( t . quickDecomp ( a , b , e , g , h , i ) , u . quickDecomp ( a , b , e , g , h , i ) ) : ( u . quickDecomp ( a , b , e , g , h , i ) , t . quickDecomp ( a , b , e , g , h , i ) ) , a } return a . push ( this ) , a } , c . prototype . removeCollinearPoints = function ( a ) { for ( var b = 0 , c = this . vertices . length - 1 ; this . vertices . length > 3 && c >= 0 ; -- c ) f . collinear ( this . at ( c - 1 ) , this . at ( c ) , this . at ( c + 1 ) , a ) && ( this . vertices . splice ( c % this . vertices . length , 1 ) , c -- , b ++ ) ; return b } } , { "./Line" : 2 , "./Point" : 3 , "./Scalar" : 5 } ] , 5 : [ function ( a , b ) { function c ( ) { } b . exports = c , c . eq = function ( a , b , c ) { return c = c || 0 , Math . abs ( a - b ) < c } } , { } ] , 6 : [ function ( a , b ) { b . exports = { Polygon : a ( "./Polygon" ) , Point : a ( "./Point" ) } } , { "./Point" : 3 , "./Polygon" : 4 } ] , 7 : [ function ( a , b ) { b . exports = { name : "p2" , version : "0.5.0" , description : "A JavaScript 2D physics engine." , author : "Stefan Hedman <schteppe@gmail.com> (http://steffe.se)" , keywords : [ "p2.js" , "p2" , "physics" , "engine" , "2d" ] , main : "./src/p2.js" , engines : { node : "*" } , repository : { type : "git" , url : "https://github.com/schteppe/p2.js.git" } , bugs : { url : "https://github.com/schteppe/p2.js/issues" } , licenses : [ { type : "MIT" } ] , devDependencies : { grunt : "~0.4.0" , "grunt-contrib-jshint" : "~0.9.2" , "grunt-contrib-nodeunit" : "~0.1.2" , "grunt-contrib-uglify" : "~0.4.0" , "grunt-browserify" : "~2.0.1" , "z-schema" : "~2.4.6" } , dependencies : { "poly-decomp" : "git://github.com/schteppe/poly-decomp.js" , "gl-matrix" : "2.1.0" } } } , { } ] , 8 : [ function ( a , b ) { function c ( a ) { this . lowerBound = d . create ( ) , a && a . lowerBound && d . copy ( this . lowerBound , a . lowerBound ) , this . upperBound = d . create ( ) , a && a . upperBound && d . copy ( this . upperBound , a . upperBound ) } { var d = a ( "../math/vec2" ) ; a ( "../utils/Utils" ) } b . exports = c ; var e = d . create ( ) ; c . prototype . setFromPoints = function ( a , b , c ) { var f = this . lowerBound , g = this . upperBound ; d
j . computeGq = function ( ) { return e . rotate ( m , o . localOffsetB , a . angle ) , e . sub ( n , b . position , a . position ) , e . sub ( n , n , m ) , n [ 0 ] } , k . computeGq = function ( ) { return e . rotate ( m , o . localOffsetB , a . angle ) , e . sub ( n , b . position , a . position ) , e . sub ( n , n , m ) , n [ 1 ] } ; var p = e . create ( ) , q = e . create ( ) ; l . computeGq = function ( ) { return e . rotate ( p , o . localOffsetB , b . angle - o . localAngleB ) , e . scale ( p , p , - 1 ) , e . sub ( n , a . position , b . position ) , e . add ( n , n , p ) , e . rotate ( q , p , - Math . PI / 2 ) , e . normalize ( q , q ) , e . dot ( n , q ) } , this . localOffsetB = h , this . localAngleB = i , this . equations . push ( j , k , l ) , this . setMaxForce ( g ) } var d = a ( "./Constraint" ) , e = a ( "../math/vec2" ) , f = a ( "../equations/Equation" ) ; b . exports = c , c . prototype = new d , c . prototype . setMaxForce = function ( a ) { for ( var b = this . equations , c = 0 ; c < this . equations . length ; c ++ ) b [ c ] . maxForce = a , b [ c ] . minForce = - a } , c . prototype . getMaxForce = function ( ) { return this . equations [ 0 ] . maxForce } ; var g = e . create ( ) , h = e . create ( ) , i = e . create ( ) , j = e . fromValues ( 1 , 0 ) , k = e . fromValues ( 0 , 1 ) ; c . prototype . update = function ( ) { var a = this . equations [ 0 ] , b = this . equations [ 1 ] , c = this . equations [ 2 ] , d = this . bodyA , f = this . bodyB ; e . rotate ( g , this . localOffsetB , d . angle ) , e . rotate ( h , this . localOffsetB , f . angle - this . localAngleB ) , e . scale ( h , h , - 1 ) , e . rotate ( i , h , Math . PI / 2 ) , e . normalize ( i , i ) , a . G [ 0 ] = - 1 , a . G [ 1 ] = 0 , a . G [ 2 ] = - e . crossLength ( g , j ) , a . G [ 3 ] = 1 , b . G [ 0 ] = 0 , b . G [ 1 ] = - 1 , b . G [ 2 ] = - e . crossLength ( g , k ) , b . G [ 4 ] = 1 , c . G [ 0 ] = - i [ 0 ] , c . G [ 1 ] = - i [ 1 ] , c . G [ 3 ] = i [ 0 ] , c . G [ 4 ] = i [ 1 ] , c . G [ 5 ] = e . crossLength ( h , i ) } } , { "../equations/Equation" : 22 , "../math/vec2" : 30 , "./Constraint" : 14 } ] , 18 : [ function ( a , b ) { function c ( a , b , c ) { c = c || { } , d . call ( this , a , b , d . PRISMATIC , c ) ; var i = g . fromValues ( 0 , 0 ) , j = g . fromValues ( 1 , 0 ) , k = g . fromValues ( 0 , 0 ) ; c . localAnchorA && g . copy ( i , c . localAnchorA ) , c . localAxisA && g . copy ( j , c . localAxisA ) , c . localAnchorB && g . copy ( k , c . localAnchorB ) , this . localAnchorA = i , this . localAnchorB = k , this . localAxisA = j ; var l = this . maxForce = "undefined" != typeof c . maxForce ? c . maxForce : Number . MAX _VALUE , m = new f ( a , b , - l , l ) , n = new g . create , o = new g . create , p = new g . create , q = new g . create ; if ( m . computeGq = function ( ) { return g . dot ( p , q ) } , m . updateJacobian = function ( ) { var c = this . G , d = a . position , e = b . position ; g . rotate ( n , i , a . angle ) , g . rotate ( o , k , b . angle ) , g . add ( p , e , o ) , g . sub ( p , p , d ) , g . sub ( p , p , n ) , g . rotate ( q , j , a . angle + Math . PI / 2 ) , c [ 0 ] = - q [ 0 ] , c [ 1 ] = - q [ 1 ] , c [ 2 ] = - g . crossLength ( n , q ) + g . crossLength ( q , p ) , c [ 3 ] = q [ 0 ] , c [ 4 ] = q [ 1 ] , c [ 5 ] = g . crossLength ( o , q ) } , this . equations . push ( m ) , ! c . disableRotationalLock ) { var r = new h ( a , b , - l , l ) ; this . equations . push ( r ) } this . position = 0 , this . velocity = 0 , this . lowerLimitEnabled = "undefined" != typeof c . lowerLimit ? ! 0 : ! 1 , this . upperLimitEnabled = "undefined" != typeof c . upperLimit ? ! 0 : ! 1 , this . lowerLimit = "undefined" != typeof c . lowerLimit ? c . lowerLimit : 0 , this . upperLimit = "undefined" != typeof c . upperLimit ? c . upperLimit : 1 , this . upperLimitEquation = new e ( a , b ) , this . lowerLimitEquation = new e ( a , b ) , this . upperLimitEquation . minForce = this . lowerLimitEquation . minForce = 0 , this . upperLimitEquation . maxForce = this . lowerLimitEquation . maxForce = l , this . motorEquation = new f ( a , b ) , this . motorEnabled = ! 1 , this . motorSpeed = 0 ; { var s = this , t = this . motorEquation ; t . computeGW } t . computeGq = function ( ) { return 0 } , t . computeGW = function ( ) { var a = this . G , b = this . bodyA , c = this . bodyB , d = b . velocity , e = c . velocity , f = b . angularVelocity , g = c . angularVelocity ; return this . transformedGmult ( a , d , f , e , g ) + s . motorSpeed } } var d = a ( "./Constraint" ) , e = a ( "../equations/ContactEquation" ) , f = a ( "../equations/Equation" ) , g = a ( "../math/vec2" ) , h = a ( "../equations/RotationalLockEquation" ) ; b . exports = c , c . prototype = new d ; var i = g . create ( ) , j = g . create ( ) , k = g . create ( ) , l = g . create ( ) , m = g . create ( ) , n = g . create ( ) ; c . prototype . update = function ( ) { var a = this . equations , b = a [ 0 ] , c = this . upperLimit , d = this . lowerLimit , e = this . upperLimitEquation , f = this . lowerLimitEquation , h = this . bodyA , o = this . bodyB , p = this . localAxisA , q = this . localAnchorA , r = this . localAnchorB ; b . updateJacobian ( ) , g . rotate ( i , p , h . angle ) , g . rotate ( l , q , h . angle ) , g . add ( j , l , h . position ) , g . rotate ( m , r , o . angle ) , g . add ( k , m , o . position ) ; var s = this . position = g . dot ( k , i ) - g . dot ( j , i ) ; if ( this . motorEnabled ) { var t = this . motorEquation . G ; t [ 0 ] = i [ 0 ] , t [ 1 ] = i [ 1 ] , t [ 2 ] = g . crossLength ( i , m ) , t [ 3 ] = - i [ 0 ] , t [ 4 ] = - i [ 1 ] , t [ 5 ] = - g . crossLength ( i , l ) } if ( this . upperLimitEnabled && s > c ) g . scale ( e . normalA , i , - 1 ) , g . sub ( e . contactPointA , j , h . position ) , g . sub ( e . contactPointB , k , o . pos
c . prototype . computeAABB = function ( a , b , c ) { var d = this . length ; e . set ( f [ 0 ] , - d / 2 , 0 ) , e . set ( f [ 1 ] , d / 2 , 0 ) , a . setFromPoints ( f , b , c ) } } , { "../math/vec2" : 30 , "./Shape" : 42 } ] , 39 : [ function ( a , b ) { function c ( ) { d . call ( this , d . PARTICLE ) } var d = a ( "./Shape" ) , e = a ( "../math/vec2" ) ; b . exports = c , c . prototype = new d , c . prototype . computeMomentOfInertia = function ( ) { return 0 } , c . prototype . updateBoundingRadius = function ( ) { this . boundingRadius = 0 } , c . prototype . computeAABB = function ( a , b ) { this . length ; e . copy ( a . lowerBound , b ) , e . copy ( a . upperBound , b ) } } , { "../math/vec2" : 30 , "./Shape" : 42 } ] , 40 : [ function ( a , b ) { function c ( ) { d . call ( this , d . PLANE ) } { var d = a ( "./Shape" ) , e = a ( "../math/vec2" ) ; a ( "../utils/Utils" ) } b . exports = c , c . prototype = new d , c . prototype . computeMomentOfInertia = function ( ) { return 0 } , c . prototype . updateBoundingRadius = function ( ) { this . boundingRadius = Number . MAX _VALUE } , c . prototype . computeAABB = function ( a , b , c ) { var d = 0 , f = e . set ; "number" == typeof c && ( d = c % ( 2 * Math . PI ) ) , 0 == d ? ( f ( a . lowerBound , - Number . MAX _VALUE , - Number . MAX _VALUE ) , f ( a . upperBound , Number . MAX _VALUE , 0 ) ) : d == Math . PI / 2 ? ( f ( a . lowerBound , 0 , - Number . MAX _VALUE ) , f ( a . upperBound , Number . MAX _VALUE , Number . MAX _VALUE ) ) : d == Math . PI ? ( f ( a . lowerBound , - Number . MAX _VALUE , 0 ) , f ( a . upperBound , Number . MAX _VALUE , Number . MAX _VALUE ) ) : d == 3 * Math . PI / 2 ? ( f ( a . lowerBound , - Number . MAX _VALUE , - Number . MAX _VALUE ) , f ( a . upperBound , 0 , Number . MAX _VALUE ) ) : ( f ( a . lowerBound , - Number . MAX _VALUE , - Number . MAX _VALUE ) , f ( a . upperBound , Number . MAX _VALUE , Number . MAX _VALUE ) ) , e . add ( a . lowerBound , a . lowerBound , b ) , e . add ( a . upperBound , a . upperBound , b ) } , c . prototype . updateArea = function ( ) { this . area = Number . MAX _VALUE } } , { "../math/vec2" : 30 , "../utils/Utils" : 45 , "./Shape" : 42 } ] , 41 : [ function ( a , b ) { function c ( a , b ) { var c = [ d . fromValues ( - a / 2 , - b / 2 ) , d . fromValues ( a / 2 , - b / 2 ) , d . fromValues ( a / 2 , b / 2 ) , d . fromValues ( - a / 2 , b / 2 ) ] ; this . width = a , this . height = b , f . call ( this , c ) , this . type = e . RECTANGLE } var d = a ( "../math/vec2" ) , e = a ( "./Shape" ) , f = a ( "./Convex" ) ; b . exports = c , c . prototype = new f ( [ ] ) , c . prototype . computeMomentOfInertia = function ( a ) { var b = this . width , c = this . height ; return a * ( c * c + b * b ) / 12 } , c . prototype . updateBoundingRadius = function ( ) { var a = this . width , b = this . height ; this . boundingRadius = Math . sqrt ( a * a + b * b ) / 2 } ; d . create ( ) , d . create ( ) , d . create ( ) , d . create ( ) ; c . prototype . computeAABB = function ( a , b , c ) { a . setFromPoints ( this . vertices , b , c ) } , c . prototype . updateArea = function ( ) { this . area = this . width * this . height } } , { "../math/vec2" : 30 , "./Convex" : 36 , "./Shape" : 42 } ] , 42 : [ function ( a , b ) { function c ( a ) { this . type = a , this . id = c . idCounter ++ , this . boundingRadius = 0 , this . collisionGroup = 1 , this . collisionMask = 1 , a && this . updateBoundingRadius ( ) , this . material = null , this . area = 0 , this . sensor = ! 1 , this . updateArea ( ) } b . exports = c , c . idCounter = 0 , c . CIRCLE = 1 , c . PARTICLE = 2 , c . PLANE = 4 , c . CONVEX = 8 , c . LINE = 16 , c . RECTANGLE = 32 , c . CAPSULE = 64 , c . HEIGHTFIELD = 128 , c . prototype . computeMomentOfInertia = function ( ) { throw new Error ( "Shape.computeMomentOfInertia is not implemented in this Shape..." ) } , c . prototype . updateBoundingRadius = function ( ) { throw new Error ( "Shape.updateBoundingRadius is not implemented in this Shape..." ) } , c . prototype . updateArea = function ( ) { } , c . prototype . computeAABB = function ( ) { } } , { } ] , 43 : [ function ( a , b ) { function c ( a ) { f . call ( this , a , f . GS ) , a = a || { } , this . iterations = a . iterations || 10 , this . tolerance = a . tolerance || 1e-10 , this . arrayStep = 30 , this . lambda = new g . ARRAY _TYPE ( this . arrayStep ) , this . Bs = new g . ARRAY _TYPE ( this . arrayStep ) , this . invCs = new g . ARRAY _TYPE ( this . arrayStep ) , this . useZeroRHS = ! 1 , this . frictionIterations = 0 , this . usedIterations = 0 } function d ( a ) { for ( var b = 0 ; b !== a . length ; b ++ ) a [ b ] = 0 } var e = a ( "../math/vec2" ) , f = a ( "./Solver" ) , g = a ( "../utils/Utils" ) , h = a ( "../equations/FrictionEquation" ) ; b . exports = c , c . prototype = new f , c . prototype . solve = function ( a , b ) { this . sortEquations ( ) ; var f = 0 , i = this . iterations , j = this . frictionIterations , k = this . equations , l = k . length , m = Math . pow ( this . tolerance * l , 2 ) , n = b . bodies , o = b . bodies . length , p = ( e . add , e . set , this . useZeroRHS ) , q = this . lambda ; this . usedIterations = 0 , q . length < l && ( q = this . lambda = new g . ARRAY _TYPE ( l + this . arrayStep ) , this . Bs = new g . ARRAY _TYPE ( l + this . arrayStep ) , this . invCs = new g . ARRAY _TYPE ( l + this . arrayStep ) ) , d ( q ) ; for ( var r = this . invCs , s = this . Bs , q = this . lambda , t = 0 ; t !== k . length ; t ++ ) { var u = k [ t ] ; ( u . timeStep !== a || u . needsUpdate ) && ( u . timeStep = a , u . u
} ) , p2 . Body . prototype . parent = null , p2 . Spring . prototype . parent = null , Phaser . Physics . P2 = function ( a , b ) { this . game = a , "undefined" != typeof b && b . hasOwnProperty ( "gravity" ) && b . hasOwnProperty ( "broadphase" ) || ( b = { gravity : [ 0 , 0 ] , broadphase : new p2 . SAPBroadphase } ) , this . world = new p2 . World ( b ) , this . frameRate = 1 / 60 , this . useElapsedTime = ! 1 , this . materials = [ ] , this . gravity = new Phaser . Physics . P2 . InversePointProxy ( this , this . world . gravity ) , this . walls = { left : null , right : null , top : null , bottom : null } , this . onBodyAdded = new Phaser . Signal , this . onBodyRemoved = new Phaser . Signal , this . onSpringAdded = new Phaser . Signal , this . onSpringRemoved = new Phaser . Signal , this . onConstraintAdded = new Phaser . Signal , this . onConstraintRemoved = new Phaser . Signal , this . onContactMaterialAdded = new Phaser . Signal , this . onContactMaterialRemoved = new Phaser . Signal , this . postBroadphaseCallback = null , this . callbackContext = null , this . onBeginContact = new Phaser . Signal , this . onEndContact = new Phaser . 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 Phaser . Physics . P2 . CollisionGroup ( 1 ) , this . boundsCollisionGroup = new Phaser . Physics . P2 . CollisionGroup ( 2 ) , this . everythingCollisionGroup = new Phaser . Physics . P2 . CollisionGroup ( 2147483648 ) , this . boundsCollidesWith = [ ] , this . _toRemove = [ ] , this . _collisionGroupID = 2 , this . setBoundsToWorld ( ! 0 , ! 0 , ! 0 , ! 0 , ! 1 ) } , Phaser . 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 , c ) { "undefined" == typeof b && ( b = ! 1 ) , "undefined" == typeof c && ( c = ! 0 ) ; var d = 1 ; if ( Array . isArray ( a ) ) for ( d = a . length ; d -- ; ) a [ d ] instanceof Phaser . Group ? this . enable ( a [ d ] . children , b , c ) : ( this . enableBody ( a [ d ] , b ) , c && a [ d ] . hasOwnProperty ( "children" ) && a [ d ] . children . length > 0 && this . enable ( a [ d ] , b , ! 0 ) ) ; else a instanceof Phaser . Group ? this . enable ( a . children , b , c ) : ( this . enableBody ( a , b ) , c && a . hasOwnProperty ( "children" ) && a . children . length > 0 && this . enable ( a . children , b , ! 0 ) ) } , enableBody : function ( a , b ) { a . hasOwnProperty ( "body" ) && null === a . body && ( a . body = new Phaser . Physics . P2 . Body ( this . game , a , a . x , a . y , 1 ) , a . body . debug = b , a . anchor . set ( . 5 ) ) } , setImpactEvents : function ( a ) { a ? this . world . on ( "impact" , this . impactHandler , this ) : this . world . off ( "impact" , this . impactHandler , this ) } , setPostBroadphaseCallback : function ( a , b ) { this . postBroadphaseCallback = a , this . callbackContext = b , null !== a ? this . world . on ( "postBroadphase" , this . postBroadphaseHandler , this ) : this . world . off ( "postBroadphase" , this . postBroadphaseHandler , this ) } , postBroadphaseHandler : function ( a ) { if ( this . postBroadphaseCallback ) for ( var b = a . pairs . length ; b -= 2 ; ) a . pairs [ b ] . parent && a . pairs [ b + 1 ] . parent && ! this . postBroadphaseCallback . call ( this . callbackContext , a . pairs [ b ] . parent , a . pairs [ b + 1 ] . parent ) && a . pairs . splice ( b , 2 ) } , impactHandler : function ( a ) { if ( a . bodyA . parent && a . bodyB . parent ) { var b = a . bodyA . parent , c = a . bodyB . parent ; b . _bodyCallbacks [ a . bodyB . id ] && b . _bodyCallbacks [ a . bodyB . id ] . call ( b . _bodyCallbackContext [ a . bodyB . id ] , b , c , a . shapeA , a . shapeB ) , c . _bodyCallbacks [ a . bodyA . id ] && c . _bodyCallbacks [ a . bodyA . id ] . call ( c . _bodyCallbackContext [ a . bodyA . id ] , c , b , a . shapeB , a . shapeA ) , b . _groupCallbacks [ a . shapeB . collisionGroup ] && b . _groupCallbacks [ a . shapeB . collisionGroup ] . call ( b . _groupCallbackContext [ a . shapeB . collisionGroup ] , b , c , a . shapeA , a . shapeB ) , c . _groupCallbacks [ a . shapeA . collisionGroup ] && c . _groupCallbacks [ a . shapeA . collisionGroup ] . call ( c . _groupCallbackContext [ a . shapeA . collisionGroup ] , c , b , a . shapeB , a . shapeA ) } } , beginContactHandler : function ( a ) { this . onBeginContact . dispatch ( a . bodyA , a . bodyB , a . shapeA , a . shapeB , a . contactEquations ) , a . bodyA . parent && a . bodyA . parent . onBeginContact . dispatch ( a . bodyB . parent , a . shapeA , a . shapeB , a . contactEquations ) , a . bodyB . parent && a . bodyB . parent . onBeginContact . dispatch ( a . bodyA . parent , a . shapeB , a . shapeA , a . contactEquations ) } , endContactHandler : function ( a ) { this . onEndContact . dispatch ( a . bodyA , a . bodyB , a . shapeA , a . shapeB ) , a . bodyA
} } ) , Phaser . Physics . P2 . BodyDebug = function ( a , b , c ) { Phaser . Group . call ( this , a ) ; var d = { pixelsPerLengthUnit : 20 , debugPolygons : ! 1 , lineWidth : 1 , alpha : . 5 } ; this . settings = Phaser . Utils . extend ( d , c ) , this . ppu = this . settings . pixelsPerLengthUnit , this . ppu = - 1 * this . ppu , this . body = b , this . canvas = new Phaser . Graphics ( a ) , this . canvas . alpha = this . settings . alpha , this . add ( this . canvas ) , this . draw ( ) } , Phaser . Physics . P2 . BodyDebug . prototype = Object . create ( Phaser . Group . prototype ) , Phaser . Physics . P2 . BodyDebug . prototype . constructor = Phaser . Physics . P2 . BodyDebug , Phaser . Utils . extend ( Phaser . Physics . P2 . BodyDebug . prototype , { update : function ( ) { this . updateSpriteTransform ( ) } , updateSpriteTransform : function ( ) { return this . position . x = this . body . position [ 0 ] * this . ppu , this . position . y = this . body . position [ 1 ] * this . ppu , this . rotation = this . body . angle } , draw : function ( ) { var a , b , c , d , e , f , g , h , i , j , k , l , m , n , o ; if ( h = this . body , j = this . canvas , j . clear ( ) , c = parseInt ( this . randomPastelHex ( ) , 16 ) , f = 16711680 , g = this . lineWidth , h instanceof p2 . Body && h . shapes . length ) { var p = h . shapes . length ; for ( d = 0 ; d !== p ; ) { if ( b = h . shapes [ d ] , i = h . shapeOffsets [ d ] , a = h . shapeAngles [ d ] , i = i || 0 , a = a || 0 , b instanceof p2 . Circle ) this . drawCircle ( j , i [ 0 ] * this . ppu , i [ 1 ] * this . ppu , a , b . radius * this . ppu , c , g ) ; else if ( b instanceof p2 . Convex ) { for ( l = [ ] , m = p2 . vec2 . create ( ) , e = n = 0 , o = b . vertices . length ; o >= 0 ? o > n : n > o ; e = o >= 0 ? ++ n : -- n ) k = b . vertices [ e ] , p2 . vec2 . rotate ( m , k , a ) , l . push ( [ ( m [ 0 ] + i [ 0 ] ) * this . ppu , - ( m [ 1 ] + i [ 1 ] ) * this . ppu ] ) ; this . drawConvex ( j , l , b . triangles , f , c , g , this . settings . debugPolygons , [ i [ 0 ] * this . ppu , - i [ 1 ] * this . ppu ] ) } else b instanceof p2 . Plane ? this . drawPlane ( j , i [ 0 ] * this . ppu , - i [ 1 ] * this . ppu , c , f , 5 * g , 10 * g , 10 * g , 100 * this . ppu , a ) : b instanceof p2 . Line ? this . drawLine ( j , b . length * this . ppu , f , g ) : b instanceof p2 . Rectangle && this . drawRectangle ( j , i [ 0 ] * this . ppu , - i [ 1 ] * this . ppu , a , b . width * this . ppu , b . height * this . ppu , f , c , g ) ; d ++ } } } , drawRectangle : function ( a , b , c , d , e , f , g , h , i ) { "undefined" == typeof i && ( i = 1 ) , "undefined" == typeof g && ( g = 0 ) , a . lineStyle ( i , g , 1 ) , a . beginFill ( h ) , a . drawRect ( b - e / 2 , c - f / 2 , e , f ) } , drawCircle : function ( a , b , c , d , e , f , g ) { "undefined" == typeof g && ( g = 1 ) , "undefined" == typeof f && ( f = 16777215 ) , a . lineStyle ( g , 0 , 1 ) , a . beginFill ( f , 1 ) , a . drawCircle ( b , c , - e ) , a . endFill ( ) , a . moveTo ( b , c ) , a . lineTo ( b + e * Math . cos ( - d ) , c + e * Math . sin ( - d ) ) } , drawLine : function ( a , b , c , d ) { "undefined" == typeof d && ( d = 1 ) , "undefined" == typeof c && ( c = 0 ) , a . lineStyle ( 5 * d , c , 1 ) , a . moveTo ( - b / 2 , 0 ) , a . lineTo ( b / 2 , 0 ) } , drawConvex : function ( a , b , c , d , e , f , g , h ) { var i , j , k , l , m , n , o , p , q , r , s ; if ( "undefined" == typeof f && ( f = 1 ) , "undefined" == typeof d && ( d = 0 ) , g ) { for ( i = [ 16711680 , 65280 , 255 ] , j = 0 ; j !== b . length + 1 ; ) l = b [ j % b . length ] , m = b [ ( j + 1 ) % b . length ] , o = l [ 0 ] , r = l [ 1 ] , p = m [ 0 ] , s = m [ 1 ] , a . lineStyle ( f , i [ j % i . length ] , 1 ) , a . moveTo ( o , - r ) , a . lineTo ( p , - s ) , a . drawCircle ( o , - r , 2 * f ) , j ++ ; return a . lineStyle ( f , 0 , 1 ) , a . drawCircle ( h [ 0 ] , h [ 1 ] , 2 * f ) } for ( a . lineStyle ( f , d , 1 ) , a . beginFill ( e ) , j = 0 ; j !== b . length ; ) k = b [ j ] , n = k [ 0 ] , q = k [ 1 ] , 0 === j ? a . moveTo ( n , - q ) : a . lineTo ( n , - q ) , j ++ ; return a . endFill ( ) , b . length > 2 ? ( a . moveTo ( b [ b . length - 1 ] [ 0 ] , - b [ b . length - 1 ] [ 1 ] ) , a . lineTo ( b [ 0 ] [ 0 ] , - b [ 0 ] [ 1 ] ) ) : void 0 } , drawPath : function ( a , b , c , d , e ) { var f , g , h , i , j , k , l , m , n , o , p , q , r ; for ( "undefined" == typeof e && ( e = 1 ) , "undefined" == typeof c && ( c = 0 ) , a . lineStyle ( e , c , 1 ) , "number" == typeof d && a . beginFill ( d ) , h = null , i = null , g = 0 ; g < b . length ; ) p = b [ g ] , q = p [ 0 ] , r = p [ 1 ] , ( q !== h || r !== i ) && ( 0 === g ? a . moveTo ( q , r ) : ( j = h , k = i , l = q , m = r , n = b [ ( g + 1 ) % b . length ] [ 0 ] , o = b [ ( g + 1 ) % b . length ] [ 1 ] , f = ( l - j ) * ( o - k ) - ( n - j ) * ( m - k ) , 0 !== f && a . lineTo ( q , r ) ) , h = q , i = r ) , g ++ ; "number" == typeof d && a . endFill ( ) , b . length > 2 && "number" == typeof d && ( a . moveTo ( b [ b . length - 1 ] [ 0 ] , b [ b . length - 1 ] [ 1 ] ) , a . lineTo ( b [ 0 ] [ 0 ] , b [ 0 ] [ 1 ] ) ) } , drawPlane : function ( a , b , c , d , e , f , g , h , i , j ) { var k , l , m ; "undefined" == typeof f && ( f = 1 ) , "undefined" == typeof d && ( d = 16777215 ) , a . lineStyle ( f , e , 11 ) , a . beginFill ( d ) , k = i , a . moveTo ( b , - c ) , l = b + Math . cos ( j ) * this . game . width , m = c + Math . sin ( j ) * this . game . height , a . lineTo ( l , - m ) , a . moveTo ( b , - c ) , l = b + Math . cos ( j ) * - this . game . width , m = c + Math . sin ( j ) * - this . game . height , a . lineTo ( l , - m ) } , randomPastelHex : function ( ) { var a , b , c , d ; return c = [ 255 , 255 , 255 ] , d = Math . floor ( 256 * Math . random ( ) ) , b = Math . floor ( 256 * Math . random ( ) ) , a = Math . floor ( 256 * Math . random ( ) ) , d = Math . floor ( ( d + 3 * c [ 0 ] ) / 4 ) , b = Math . floor ( ( b + 3 * c [ 1 ] ) / 4 ) , a = Math . floor ( ( a + 3 * c [ 2 ] ) / 4 ) , this . rgbToHex ( d , b , a ) } , rgbToHex : function ( a , b , c ) { return this .
2014-02-28 09:30:53 +00:00
//# sourceMappingURL=phaser.map