2015-05-06 07:00:42 +00:00
/* Phaser v2.4.0 - http://phaser.io - @photonstorm - (c) 2015 Photon Storm Ltd. */
2014-02-28 09:30:53 +00:00
2015-05-06 07:00:42 +00:00
( function ( ) { var a = this , b = b || { } ; b . WEBGL _RENDERER = 0 , b . CANVAS _RENDERER = 1 , b . VERSION = "v2.2.8" , b . _UID = 0 , "undefined" != typeof Float32Array ? ( b . Float32Array = Float32Array , b . Uint16Array = Uint16Array , b . Uint32Array = Uint32Array , b . ArrayBuffer = ArrayBuffer ) : ( b . Float32Array = Array , b . Uint16Array = Array ) , b . PI _2 = 2 * Math . PI , b . RAD _TO _DEG = 180 / Math . PI , b . DEG _TO _RAD = Math . PI / 180 , b . RETINA _PREFIX = "@2x" , b . defaultRenderOptions = { view : null , transparent : ! 1 , antialias : ! 1 , preserveDrawingBuffer : ! 1 , resolution : 1 , clearBeforeRender : ! 0 , autoResize : ! 1 } , b . DisplayObject = function ( ) { this . position = new b . Point ( 0 , 0 ) , this . scale = new b . Point ( 1 , 1 ) , this . transformCallback = null , this . transformCallbackContext = null , this . pivot = new b . Point ( 0 , 0 ) , this . rotation = 0 , this . alpha = 1 , this . visible = ! 0 , this . hitArea = null , this . renderable = ! 1 , this . parent = null , this . stage = null , this . worldAlpha = 1 , this . worldTransform = new b . Matrix , this . worldPosition = new b . Point ( 0 , 0 ) , this . worldScale = new b . Point ( 1 , 1 ) , this . worldRotation = 0 , this . _sr = 0 , this . _cr = 1 , this . filterArea = null , this . _bounds = new b . Rectangle ( 0 , 0 , 1 , 1 ) , this . _currentBounds = null , this . _mask = null , this . _cacheAsBitmap = ! 1 , this . _cacheIsDirty = ! 1 } , b . DisplayObject . prototype . constructor = b . DisplayObject , b . DisplayObject . prototype . destroy = function ( ) { if ( this . children ) { for ( var a = this . children . length ; a -- ; ) this . children [ a ] . destroy ( ) ; this . children = [ ] } this . transformCallback = null , this . transformCallbackContext = null , this . hitArea = null , this . parent = null , this . stage = null , this . worldTransform = null , this . filterArea = null , this . _bounds = null , this . _currentBounds = null , this . _mask = null , this . renderable = ! 1 , this . _destroyCachedSprite ( ) } , Object . defineProperty ( b . DisplayObject . prototype , "worldVisible" , { get : function ( ) { var a = this ; do { if ( ! a . visible ) return ! 1 ; a = a . parent } while ( a ) ; return ! 0 } } ) , Object . defineProperty ( b . DisplayObject . prototype , "mask" , { get : function ( ) { return this . _mask } , set : function ( a ) { this . _mask && ( this . _mask . isMask = ! 1 ) , this . _mask = a , this . _mask && ( this . _mask . isMask = ! 0 ) } } ) , Object . defineProperty ( b . DisplayObject . prototype , "filters" , { get : function ( ) { return this . _filters } , set : function ( a ) { if ( a ) { for ( var b = [ ] , c = 0 ; c < a . length ; c ++ ) for ( var d = a [ c ] . passes , e = 0 ; e < d . length ; e ++ ) b . push ( d [ e ] ) ; this . _filterBlock = { target : this , filterPasses : b } } this . _filters = a } } ) , Object . defineProperty ( b . DisplayObject . prototype , "cacheAsBitmap" , { get : function ( ) { return this . _cacheAsBitmap } , set : function ( a ) { this . _cacheAsBitmap !== a && ( a ? this . _generateCachedSprite ( ) : this . _destroyCachedSprite ( ) , this . _cacheAsBitmap = a ) } } ) , b . DisplayObject . prototype . updateTransform = function ( a ) { if ( a || this . parent || this . game ) { var c = this . parent ; a ? c = a : this . parent || ( c = this . game . world ) ; var d , e , f , g , h , i , j = c . worldTransform , k = this . worldTransform ; this . rotation % b . PI _2 ? ( this . rotation !== this . rotationCache && ( this . rotationCache = this . rotation , this . _sr = Math . sin ( this . rotation ) , this . _cr = Math . cos ( this . rotation ) ) , d = this . _cr * this . scale . x , e = this . _sr * this . scale . x , f = - this . _sr * this . scale . y , g = this . _cr * this . scale . y , h = this . position . x , i = this . position . y , ( this . pivot . x || this . pivot . y ) && ( h -= this . pivot . x * d + this . pivot . y * f , i -= this . pivot . x * e + this . pivot . y * g ) , k . a = d * j . a + e * j . c , k . b = d * j . b + e * j . d , k . c = f * j . a + g * j . c , k . d = f * j . b + g * j . d , k . tx = h * j . a + i * j . c + j . tx , k . ty = h * j . b + i * j . d + j . ty ) : ( d = this . scale . x , g = this . scale . y , h = this . position . x - this . pivot . x * d , i = this . position . y - this . pivot . y * g , k . a = d * j . a , k . b = d * j . b , k . c = g * j . c , k . d = g * j . d , k . tx = h * j . a + i * j . c + j . tx , k . ty = h * j . b + i * j . d + j . ty ) , this . worldAlpha = this . alpha * c . worldAlpha , this . worldPosition . set ( k . tx , k . ty ) , this . worldScale . set ( Math . sqrt ( k . a * k . a + k . b * k . b ) , Math . sqrt ( k . c * k . c + k . d * k . d ) ) , this . worldRotation = Math . atan2 ( - k . c , k . d ) , this . transformCallback && this . transformCallback . call ( this . transformCallbackContext , k , j ) } } , b . DisplayObject . prototype . displayObjectUpdateTransform = b . DisplayObject . prototype . updateTransform , b . DisplayObject . prototype . getBounds = function ( a ) { return a = a , b . EmptyRectangle } , b . DisplayObject . prototype . getLocalBounds = function ( ) { return this . getBounds ( b . identityMatrix ) } , b . DisplayObject . prototype . setStageReference = function ( a ) { this . stage = a } , b . DisplayObject . prototype . preUpdate = function ( ) { } , b . DisplayObject . prototype . generateTexture = function ( a , c , d ) { var e = this . getLocalBounds ( ) , f = new b . RenderTexture ( 0 | e . width , 0 | e . height , d , c , a )
} , b . StripShader . prototype . constructor = b . StripShader , b . StripShader . 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 . colorAttribute = a . getAttribLocation ( c , "aColor" ) , this . aVertexPosition = a . getAttribLocation ( c , "aVertexPosition" ) , this . aTextureCoord = a . getAttribLocation ( c , "aTextureCoord" ) , this . attributes = [ this . aVertexPosition , this . aTextureCoord ] , this . translationMatrix = a . getUniformLocation ( c , "translationMatrix" ) , this . alpha = a . getUniformLocation ( c , "alpha" ) , this . program = c } , b . StripShader . prototype . destroy = function ( ) { this . gl . deleteProgram ( this . program ) , this . uniforms = null , this . gl = null , this . attribute = null } , b . PrimitiveShader = function ( a ) { this . _UID = b . _UID ++ , 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 float flipY;" , "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 * -flipY) + flipY , 0.0, 1.0);" , " vColor = aColor * vec4(tint * alpha, alpha);" , "}" ] , this . init ( ) } , b . PrimitiveShader . prototype . constructor = b . PrimitiveShader , 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 . flipY = a . getUniformLocation ( c , "flipY" ) , 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 . attributes = null } , b . ComplexPrimitiveShader = function ( a ) { this . _UID = b . _UID ++ , 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;" , "uniform mat3 translationMatrix;" , "uniform vec2 projectionVector;" , "uniform vec2 offsetVector;" , "uniform vec3 tint;" , "uniform float alpha;" , "uniform vec3 color;" , "uniform float flipY;" , "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 * -flipY) + flipY , 0.0, 1.0);" , " vColor = vec4(color * alpha * tint, alpha);" , "}" ] , this . init ( ) } , b . ComplexPrimitiveShader . prototype . constructor = b . ComplexPrimitiveShader , b . ComplexPrimitiveShader . 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 . color = a . getUniformLocation ( c , "color" ) , this . flipY = a . getUniformLocation ( c , "flipY" ) , this . aVertexPosition = a . getAttribLocation ( c , "aVertexPosition" ) , this . attributes = [ this . aVertexPosition , this . colorAttribute ] , this . translationMatrix = a . getUniformLocation ( c , "translationMatrix" ) , this . alpha = a . getUniformLocation ( c , "alpha" ) , this . program = c } , b . ComplexPrimitiveShader . 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 ,
} , b . WebGLFastSpriteBatch . prototype . begin = function ( a , b ) { this . renderSession = b , this . shader = this . renderSession . shaderManager . fastShader , this . matrix = a . worldTransform . toArray ( ! 0 ) , this . start ( ) } , b . WebGLFastSpriteBatch . prototype . end = function ( ) { this . flush ( ) } , b . WebGLFastSpriteBatch . prototype . render = function ( a ) { var b = a . children , c = b [ 0 ] ; if ( c . texture . _uvs ) { this . currentBaseTexture = c . texture . baseTexture , c . blendMode !== this . renderSession . blendModeManager . currentBlendMode && ( this . flush ( ) , this . renderSession . blendModeManager . setBlendMode ( c . blendMode ) ) ; for ( var d = 0 , e = b . length ; e > d ; d ++ ) this . renderSprite ( b [ d ] ) ; this . flush ( ) } } , b . WebGLFastSpriteBatch . prototype . renderSprite = function ( a ) { if ( a . visible && ( a . texture . baseTexture === this . currentBaseTexture || ( this . flush ( ) , this . currentBaseTexture = a . texture . baseTexture , a . texture . _uvs ) ) ) { var b , c , d , e , f , g , h , i , j = this . vertices ; if ( b = a . texture . _uvs , c = a . texture . frame . width , d = a . texture . frame . height , a . texture . trim ) { var k = a . texture . trim ; f = k . x - a . anchor . x * k . width , e = f + a . texture . crop . width , h = k . y - a . anchor . y * k . height , g = h + a . texture . crop . height } else e = a . texture . frame . width * ( 1 - a . anchor . x ) , f = a . texture . frame . width * - a . anchor . x , g = a . texture . frame . height * ( 1 - a . anchor . y ) , h = a . texture . frame . height * - a . anchor . y ; i = 4 * this . currentBatchSize * this . vertSize , j [ i ++ ] = f , j [ i ++ ] = h , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x0 , j [ i ++ ] = b . y1 , j [ i ++ ] = a . alpha , j [ i ++ ] = e , j [ i ++ ] = h , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x1 , j [ i ++ ] = b . y1 , j [ i ++ ] = a . alpha , j [ i ++ ] = e , j [ i ++ ] = g , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x2 , j [ i ++ ] = b . y2 , j [ i ++ ] = a . alpha , j [ i ++ ] = f , j [ i ++ ] = g , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x3 , j [ i ++ ] = b . y3 , j [ i ++ ] = a . alpha , this . currentBatchSize ++ , this . currentBatchSize >= this . size && this . flush ( ) } } , b . WebGLFastSpriteBatch . prototype . flush = function ( ) { if ( 0 !== this . currentBatchSize ) { var a = this . gl ; if ( this . currentBaseTexture . _glTextures [ a . id ] || this . renderSession . renderer . updateTexture ( this . currentBaseTexture , a ) , a . bindTexture ( a . TEXTURE _2D , this . currentBaseTexture . _glTextures [ a . id ] ) , this . currentBatchSize > . 5 * this . size ) a . bufferSubData ( a . ARRAY _BUFFER , 0 , this . vertices ) ; else { var b = this . vertices . subarray ( 0 , 4 * this . currentBatchSize * this . vertSize ) ; a . bufferSubData ( a . ARRAY _BUFFER , 0 , b ) } a . drawElements ( a . TRIANGLES , 6 * this . currentBatchSize , a . UNSIGNED _SHORT , 0 ) , this . currentBatchSize = 0 , this . renderSession . drawCount ++ } } , b . WebGLFastSpriteBatch . prototype . stop = function ( ) { this . flush ( ) } , b . WebGLFastSpriteBatch . prototype . start = function ( ) { var a = this . gl ; a . activeTexture ( a . TEXTURE0 ) , a . bindBuffer ( a . ARRAY _BUFFER , this . vertexBuffer ) , a . bindBuffer ( a . ELEMENT _ARRAY _BUFFER , this . indexBuffer ) ; var b = this . renderSession . projection ; a . uniform2f ( this . shader . projectionVector , b . x , b . y ) , a . uniformMatrix3fv ( this . shader . uMatrix , ! 1 , this . matrix ) ; var c = 4 * this . vertSize ; a . vertexAttribPointer ( this . shader . aVertexPosition , 2 , a . FLOAT , ! 1 , c , 0 ) , a . vertexAttribPointer ( this . shader . aPositionCoord , 2 , a . FLOAT , ! 1 , c , 8 ) , a . vertexAttribPointer ( this . shader . aScale , 2 , a . FLOAT , ! 1 , c , 16 ) , a . vertexAttribPointer ( this . shader . aRotation , 1 , a . FLOAT , ! 1 , c , 24 ) , a . vertexAttribPointer ( this . shader . aTextureCoord , 2 , a . FLOAT , ! 1 , c , 28 ) , a . vertexAttribPointer ( this . shader . colorAttribute , 1 , a . FLOAT , ! 1 , c , 36 ) } , b . WebGLFilterManager = function ( ) { this . filterStack = [ ] , this . offsetX = 0 , this . offsetY = 0 } , b . WebGLFilterManager . prototype . constructor = b . WebGLFilterManager , b . WebGLFilterManager . prototype . setContext = function ( a ) { this . gl = a , this . texturePool = [ ] , this . initShaderBuffers ( ) } , b . WebGLFilterManager . prototype . begin = function ( a , b ) { this . renderSession = a , this . defaultShader = a . shaderManager . defaultShader ; var c = this . renderSession . projection ; this . width = 2 * c . x , this . height = 2 * - c . y , this . buffer = b } , b . WebGLFilterManager . prototype . pushFilter = function ( a ) { var c = this . gl , d = this . renderSession . projection , e = this . renderSession . offset ; a . _filterArea = a . target . filterArea || a . target . getBounds ( ) , this . filterStack . push ( a ) ; var f = a . filterPasses [ 0 ] ; this . offsetX += a . _filterArea . x , this . offsetY += a . _filterArea . y ; var g = th
} , b . Graphics . prototype . drawShape = function ( a ) { this . currentPath && this . currentPath . shape . points . length <= 2 && this . graphicsData . pop ( ) , this . currentPath = null , a instanceof b . Polygon && a . flatten ( ) ; var c = new b . GraphicsData ( this . lineWidth , this . lineColor , this . lineAlpha , this . fillColor , this . fillAlpha , this . filling , a ) ; return this . graphicsData . push ( c ) , c . type === b . Graphics . POLY && ( c . shape . closed = this . filling , this . currentPath = c ) , this . dirty = ! 0 , c } , Object . defineProperty ( b . Graphics . prototype , "cacheAsBitmap" , { get : function ( ) { return this . _cacheAsBitmap } , set : function ( a ) { this . _cacheAsBitmap = a , this . _cacheAsBitmap ? this . _generateCachedSprite ( ) : ( this . destroyCachedSprite ( ) , this . dirty = ! 0 ) } } ) , b . GraphicsData = function ( a , b , c , d , e , f , g ) { this . lineWidth = a , this . lineColor = b , this . lineAlpha = c , this . _lineTint = b , this . fillColor = d , this . fillAlpha = e , this . _fillTint = d , this . fill = f , this . shape = g , this . type = g . type } , b . GraphicsData . prototype . constructor = b . GraphicsData , b . GraphicsData . prototype . clone = function ( ) { return new GraphicsData ( this . lineWidth , this . lineColor , this . lineAlpha , this . fillColor , this . fillAlpha , this . fill , this . shape ) } , b . Strip = function ( a ) { b . DisplayObjectContainer . call ( this ) , this . texture = a , this . uvs = new b . Float32Array ( [ 0 , 1 , 1 , 1 , 1 , 0 , 0 , 1 ] ) , this . vertices = new b . Float32Array ( [ 0 , 0 , 100 , 0 , 100 , 100 , 0 , 100 ] ) , this . colors = new b . Float32Array ( [ 1 , 1 , 1 , 1 ] ) , this . indices = new b . Uint16Array ( [ 0 , 1 , 2 , 3 ] ) , this . dirty = ! 0 , this . blendMode = b . blendModes . NORMAL , this . canvasPadding = 0 , this . drawMode = b . Strip . DrawModes . TRIANGLE _STRIP } , b . Strip . prototype = Object . create ( b . DisplayObjectContainer . prototype ) , b . Strip . prototype . constructor = b . Strip , b . Strip . prototype . _renderWebGL = function ( a ) { ! this . visible || this . alpha <= 0 || ( a . spriteBatch . stop ( ) , this . _vertexBuffer || this . _initWebGL ( a ) , a . shaderManager . setShader ( a . shaderManager . stripShader ) , this . _renderStrip ( a ) , a . spriteBatch . start ( ) ) } , b . Strip . prototype . _initWebGL = function ( a ) { var b = a . gl ; this . _vertexBuffer = b . createBuffer ( ) , this . _indexBuffer = b . createBuffer ( ) , this . _uvBuffer = b . createBuffer ( ) , this . _colorBuffer = b . createBuffer ( ) , b . bindBuffer ( b . ARRAY _BUFFER , this . _vertexBuffer ) , b . bufferData ( b . ARRAY _BUFFER , this . vertices , b . DYNAMIC _DRAW ) , b . bindBuffer ( b . ARRAY _BUFFER , this . _uvBuffer ) , b . bufferData ( b . ARRAY _BUFFER , this . uvs , b . STATIC _DRAW ) , b . bindBuffer ( b . ARRAY _BUFFER , this . _colorBuffer ) , b . bufferData ( b . ARRAY _BUFFER , this . colors , b . STATIC _DRAW ) , b . bindBuffer ( b . ELEMENT _ARRAY _BUFFER , this . _indexBuffer ) , b . bufferData ( b . ELEMENT _ARRAY _BUFFER , this . indices , b . STATIC _DRAW ) } , b . Strip . prototype . _renderStrip = function ( a ) { var c = a . gl , d = a . projection , e = a . offset , f = a . shaderManager . stripShader , g = this . drawMode === b . Strip . DrawModes . TRIANGLE _STRIP ? c . TRIANGLE _STRIP : c . TRIANGLES ; a . blendModeManager . setBlendMode ( this . blendMode ) , c . uniformMatrix3fv ( f . translationMatrix , ! 1 , this . worldTransform . toArray ( ! 0 ) ) , c . uniform2f ( f . projectionVector , d . x , - d . y ) , c . uniform2f ( f . offsetVector , - e . x , - e . y ) , c . uniform1f ( f . alpha , this . worldAlpha ) , this . dirty ? ( this . dirty = ! 1 , c . bindBuffer ( c . ARRAY _BUFFER , this . _vertexBuffer ) , c . bufferData ( c . ARRAY _BUFFER , this . vertices , c . STATIC _DRAW ) , c . vertexAttribPointer ( f . aVertexPosition , 2 , c . FLOAT , ! 1 , 0 , 0 ) , c . bindBuffer ( c . ARRAY _BUFFER , this . _uvBuffer ) , c . bufferData ( c . ARRAY _BUFFER , this . uvs , c . STATIC _DRAW ) , c . vertexAttribPointer ( f . aTextureCoord , 2 , c . FLOAT , ! 1 , 0 , 0 ) , c . activeTexture ( c . TEXTURE0 ) , this . texture . baseTexture . _dirty [ c . id ] ? a . renderer . updateTexture ( this . texture . baseTexture ) : c . bindTexture ( c . TEXTURE _2D , this . texture . baseTexture . _glTextures [ c . id ] ) , c . bindBuffer ( c . ELEMENT _ARRAY _BUFFER , this . _indexBuffer ) , c . bufferData ( c . ELEMENT _ARRAY _BUFFER , this . indices , c . STATIC _DRAW ) ) : ( c . bindBuffer ( c . ARRAY _BUFFER , this . _vertexBuffer ) , c . bufferSubData ( c . ARRAY _BUFFER , 0 , this . vertices ) , c . vertexAttribPointer ( f . aVertexPosition , 2 , c . FLOAT , ! 1 , 0 , 0 ) , c . bindBuffer ( c . ARRAY _BUFFER , this . _uvBuffer ) , c . vertexAttribPointer ( f . aTextureCoord , 2 , c . FLOAT , ! 1 , 0 , 0 ) , c . activeTexture ( c . TEXTURE0 ) , this . texture . baseTexture . _dirty [ c . id ] ? a . renderer . updateTexture ( this . texture . baseTexture ) : c . bindTexture ( c . TEXTURE _2D , this . texture . baseTexture . _glTextures [ c . id ] ) , c . bindBuffer ( c . ELEMENT _ARRAY _BUFFER , this . _indexBuffer ) ) , c . drawElements ( g , this . indices . length , c . UNSIGNED _SHORT , 0 ) } , b . Strip . prototype . _renderCanvas = function ( a ) { va
b . push ( [ c , d ] ) ; for ( var l = 1 ; c != e || d != f ; ) { var m = k << 1 ; m > - h && ( k -= h , c += i ) , g > m && ( k += g , d += j ) , l % a === 0 && b . push ( [ c , d ] ) , l ++ } return b } , clone : function ( a ) { return "undefined" == typeof a || null === a ? a = new c . Line ( this . start . x , this . start . y , this . end . x , this . end . y ) : a . setTo ( this . start . x , this . start . y , this . end . x , this . end . y ) , a } } , Object . defineProperty ( c . Line . prototype , "length" , { get : function ( ) { return Math . sqrt ( ( this . end . x - this . start . x ) * ( this . end . x - this . start . x ) + ( this . end . y - this . start . y ) * ( this . end . y - this . start . y ) ) } } ) , Object . defineProperty ( c . Line . prototype , "angle" , { get : function ( ) { return Math . atan2 ( this . end . y - this . start . y , this . end . x - this . start . x ) } } ) , Object . defineProperty ( c . Line . prototype , "slope" , { get : function ( ) { return ( this . end . y - this . start . y ) / ( this . end . x - this . start . x ) } } ) , Object . defineProperty ( c . Line . prototype , "perpSlope" , { get : function ( ) { return - ( ( this . end . x - this . start . x ) / ( this . end . y - this . start . y ) ) } } ) , Object . defineProperty ( c . Line . prototype , "x" , { get : function ( ) { return Math . min ( this . start . x , this . end . x ) } } ) , Object . defineProperty ( c . Line . prototype , "y" , { get : function ( ) { return Math . min ( this . start . y , this . end . y ) } } ) , Object . defineProperty ( c . Line . prototype , "left" , { get : function ( ) { return Math . min ( this . start . x , this . end . x ) } } ) , Object . defineProperty ( c . Line . prototype , "right" , { get : function ( ) { return Math . max ( this . start . x , this . end . x ) } } ) , Object . defineProperty ( c . Line . prototype , "top" , { get : function ( ) { return Math . min ( this . start . y , this . end . y ) } } ) , Object . defineProperty ( c . Line . prototype , "bottom" , { get : function ( ) { return Math . max ( this . start . y , this . end . y ) } } ) , Object . defineProperty ( c . Line . prototype , "width" , { get : function ( ) { return Math . abs ( this . start . x - this . end . x ) } } ) , Object . defineProperty ( c . Line . prototype , "height" , { get : function ( ) { return Math . abs ( this . start . y - this . end . y ) } } ) , Object . defineProperty ( c . Line . prototype , "normalX" , { get : function ( ) { return Math . cos ( this . angle - 1.5707963267948966 ) } } ) , Object . defineProperty ( c . Line . prototype , "normalY" , { get : function ( ) { return Math . sin ( this . angle - 1.5707963267948966 ) } } ) , Object . defineProperty ( c . Line . prototype , "normalAngle" , { get : function ( ) { return c . Math . wrap ( this . angle - 1.5707963267948966 , - Math . PI , Math . PI ) } } ) , c . Line . intersectsPoints = function ( a , b , d , e , f , g ) { "undefined" == typeof f && ( f = ! 0 ) , "undefined" == typeof g && ( g = new c . Point ) ; var h = b . y - a . y , i = e . y - d . y , j = a . x - b . x , k = d . x - e . x , l = b . x * a . y - a . x * b . y , m = e . x * d . y - d . x * e . y , n = h * k - i * j ; if ( 0 === n ) return null ; if ( g . x = ( j * m - k * l ) / n , g . y = ( i * l - h * m ) / n , f ) { var o = ( e . y - d . y ) * ( b . x - a . x ) - ( e . x - d . x ) * ( b . y - a . y ) , p = ( ( e . x - d . x ) * ( a . y - d . y ) - ( e . y - d . y ) * ( a . x - d . x ) ) / o , q = ( ( b . x - a . x ) * ( a . y - d . y ) - ( b . y - a . y ) * ( a . x - d . x ) ) / o ; return p >= 0 && 1 >= p && q >= 0 && 1 >= q ? g : null } return g } , c . Line . intersects = function ( a , b , d , e ) { return c . Line . intersectsPoints ( a . start , a . end , b . start , b . end , d , e ) } , c . Line . reflect = function ( a , b ) { return 2 * b . normalAngle - 3.141592653589793 - a . angle } , c . Matrix = function ( a , b , d , e , f , g ) { a = a || 1 , b = b || 0 , d = d || 0 , e = e || 1 , f = f || 0 , g = g || 0 , this . a = a , this . b = b , this . c = d , this . d = e , this . tx = f , this . ty = g , this . type = c . MATRIX } , c . Matrix . prototype = { fromArray : function ( a ) { return this . setTo ( a [ 0 ] , a [ 1 ] , a [ 3 ] , a [ 4 ] , a [ 2 ] , a [ 5 ] ) } , setTo : function ( a , b , c , d , e , f ) { return this . a = a , this . b = b , this . c = c , this . d = d , this . tx = e , this . ty = f , this } , clone : function ( a ) { return "undefined" == typeof a || null === a ? a = new c . Matrix ( this . a , this . b , this . c , this . d , this . tx , this . ty ) : ( a . a = this . a , a . b = this . b , a . c = this . c , a . d = this . d , a . tx = this . tx , a . ty = this . ty ) , a } , copyTo : function ( a ) { return a . copyFrom ( this ) , a } , copyFrom : function ( a ) { return this . a = a . a , this . b = a . b , this . c = a . c , this . d = a . d , this . tx = a . tx , this . ty = a . ty , this } , toArray : function ( a , b ) { return "undefined" == typeof b && ( b = new PIXI . Float32Array ( 9 ) ) , a ? ( b [ 0 ] = this . a , b [ 1 ] = this . b , b [ 2 ] = 0 , b [ 3 ] = this . c , b [ 4 ] = this . d , b [ 5 ] = 0 , b [ 6 ] = this . tx , b [ 7 ] = this . ty , b [ 8 ] = 1 ) : ( b [ 0 ] = this . a , b [ 1 ] = this . c , b [ 2 ] = this . tx , b [ 3 ] = this . b , b [ 4 ] = this . d , b [ 5 ] = this . ty , b [ 6 ] = 0 , b [ 7 ] = 0 , b [ 8 ] = 1 ) , b } , apply : function ( a , b ) { return "undefined" == typeof b && ( b = new c . Point ) , b . x = this . a * a . x + this . c * a . y + this . tx , b . y = this . b * a . x + this . d * a . y + this . ty , b } , applyInverse : function ( a , b ) { "undefined" == typeof b && ( b = new c . Point ) ; var d = 1 / ( this . a * this . d + this . c * - this . b ) , e = a . x , f = a . y ; return b . x = this . d * d * e + - this . c * d * f + ( this . ty * this . c - this . tx * this . d ) * d , b . y = this . a * d * f + - this . b * d * e + ( - this . ty * this . a + this . tx * this . b ) * d , b } , translate : function ( a , b ) { retu
do c -- ; while ( a [ c ] && this . _shouldPropagate && a [ c ] . execute ( b ) !== ! 1 ) } } } , forget : function ( ) { this . _prevParams && ( this . _prevParams = null ) } , dispose : function ( ) { this . removeAll ( ) , this . _bindings = null , this . _prevParams && ( this . _prevParams = null ) } , toString : function ( ) { return "[Phaser.Signal active:" + this . active + " numListeners:" + this . getNumListeners ( ) + "]" } } , Object . defineProperty ( c . Signal . prototype , "boundDispatch" , { get : function ( ) { var a = this ; return this . _boundDispatch || ( this . _boundDispatch = function ( ) { return a . dispatch . apply ( a , arguments ) } ) } } ) , c . Signal . prototype . constructor = c . Signal , c . SignalBinding = function ( a , b , c , d , e ) { this . _listener = b , c && ( this . _isOnce = ! 0 ) , null != d && ( this . context = d ) , this . _signal = a , e && ( this . _priority = e ) } , c . SignalBinding . prototype = { context : null , _isOnce : ! 1 , _priority : 0 , callCount : 0 , active : ! 0 , params : null , execute : function ( a ) { var b , c ; return this . active && this . _listener && ( c = this . params ? this . params . concat ( a ) : a , b = this . _listener . apply ( this . context , c ) , this . callCount ++ , this . _isOnce && this . detach ( ) ) , b } , detach : function ( ) { return this . isBound ( ) ? this . _signal . remove ( this . _listener , this . context ) : null } , isBound : function ( ) { return ! ! this . _signal && ! ! this . _listener } , isOnce : function ( ) { return this . _isOnce } , getListener : function ( ) { return this . _listener } , getSignal : function ( ) { return this . _signal } , _destroy : function ( ) { delete this . _signal , delete this . _listener , delete this . context } , toString : function ( ) { return "[Phaser.SignalBinding isOnce:" + this . _isOnce + ", isBound:" + this . isBound ( ) + ", active:" + this . active + "]" } } , c . SignalBinding . prototype . constructor = c . SignalBinding , c . Filter = function ( a , b , d ) { this . game = a , this . type = c . WEBGL _FILTER , this . passes = [ this ] , this . shaders = [ ] , this . dirty = ! 0 , this . padding = 0 , this . prevPoint = new c . Point ; var e = new Date ; if ( this . uniforms = { resolution : { type : "2f" , value : { x : 256 , y : 256 } } , time : { type : "1f" , value : 0 } , mouse : { type : "2f" , value : { x : 0 , y : 0 } } , date : { type : "4fv" , value : [ e . getFullYear ( ) , e . getMonth ( ) , e . getDate ( ) , 60 * e . getHours ( ) * 60 + 60 * e . getMinutes ( ) + e . getSeconds ( ) ] } , sampleRate : { type : "1f" , value : 44100 } , iChannel0 : { type : "sampler2D" , value : null , textureData : { repeat : ! 0 } } , iChannel1 : { type : "sampler2D" , value : null , textureData : { repeat : ! 0 } } , iChannel2 : { type : "sampler2D" , value : null , textureData : { repeat : ! 0 } } , iChannel3 : { type : "sampler2D" , value : null , textureData : { repeat : ! 0 } } } , b ) for ( var f in b ) this . uniforms [ f ] = b [ f ] ; this . fragmentSrc = d || [ ] } , c . Filter . prototype = { init : function ( ) { } , setResolution : function ( a , b ) { this . uniforms . resolution . value . x = a , this . uniforms . resolution . value . y = b } , update : function ( a ) { if ( "undefined" != typeof a ) { var b = a . x / this . game . width , c = 1 - a . y / this . game . height ; ( b !== this . prevPoint . x || c !== this . prevPoint . y ) && ( this . uniforms . mouse . value . x = b . toFixed ( 2 ) , this . uniforms . mouse . value . y = c . toFixed ( 2 ) , this . prevPoint . set ( b , c ) ) } this . uniforms . time . value = this . game . time . totalElapsedSeconds ( ) } , destroy : function ( ) { this . game = null } } , c . Filter . prototype . constructor = c . Filter , Object . defineProperty ( c . Filter . prototype , "width" , { get : function ( ) { return this . uniforms . resolution . value . x } , set : function ( a ) { this . uniforms . resolution . value . x = a } } ) , Object . defineProperty ( c . Filter . prototype , "height" , { get : function ( ) { return this . uniforms . resolution . value . y } , set : function ( a ) { this . uniforms . resolution . value . y = a } } ) , c . 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 } , c . Plugin . prototype = { preUpdate : function ( ) { } , update : function ( ) { } , render : function ( ) { } , postRender : function ( ) { } , destroy : function ( ) { this . game = null , this . parent = null , this . active = ! 1 , this . visible = ! 1 } } , c . Plugin . prototype . constructor = c . Plugin , c . PluginManager = function ( a ) { this . game = a , this . plugins = [ ] , this . _len = 0 , this . _i = 0 } , c . PluginManager . prototype = { add : function ( a ) { var b = Array . prototype . splice . call ( arguments , 1 ) , c = ! 1 ; return "function" == typeof a ? a = new a ( this . game , this ) : ( a . game = this . game , a . parent = this ) , "function" == typeof a . preUpdate && ( a . hasPreUpdate = ! 0 , c = ! 0 ) , "function" == typeof a . update && ( a . hasUpdate = ! 0 , c = ! 0 ) , "function" == typeof a . postUpdate && ( a . hasPostUpdate = ! 0 , c = ! 0 ) , "function" == typeof a . render && ( a . hasRender = ! 0 , c = ! 0 ) , "function" == typeof a . postRende
a . supportsFullScreen = this . game . device . fullscreen && ! this . game . device . cocoonJS , this . game . device . iPad || this . game . device . webApp || this . game . device . desktop || ( a . scrollTo = this . game . device . android && ! this . game . device . chrome ? new c . Point ( 0 , 1 ) : new c . Point ( 0 , 0 ) ) , this . game . device . desktop ? ( a . orientationFallback = "screen" , a . clickTrampoline = "when-not-mouse" ) : ( a . orientationFallback = "" , a . clickTrampoline = "" ) ; var b = this ; this . _orientationChange = function ( a ) { return b . orientationChange ( a ) } , this . _windowResize = function ( a ) { return b . windowResize ( a ) } , window . addEventListener ( "orientationchange" , this . _orientationChange , ! 1 ) , window . addEventListener ( "resize" , this . _windowResize , ! 1 ) , this . compatibility . supportsFullScreen && ( this . _fullScreenChange = function ( a ) { return b . fullScreenChange ( a ) } , this . _fullScreenError = function ( a ) { return b . fullScreenError ( a ) } , document . addEventListener ( "webkitfullscreenchange" , this . _fullScreenChange , ! 1 ) , document . addEventListener ( "mozfullscreenchange" , this . _fullScreenChange , ! 1 ) , document . addEventListener ( "MSFullscreenChange" , this . _fullScreenChange , ! 1 ) , document . addEventListener ( "fullscreenchange" , this . _fullScreenChange , ! 1 ) , document . addEventListener ( "webkitfullscreenerror" , this . _fullScreenError , ! 1 ) , document . addEventListener ( "mozfullscreenerror" , this . _fullScreenError , ! 1 ) , document . addEventListener ( "MSFullscreenError" , this . _fullScreenError , ! 1 ) , document . addEventListener ( "fullscreenerror" , this . _fullScreenError , ! 1 ) ) , this . game . onResume . add ( this . _gameResumed , this ) , this . dom . getOffset ( this . game . canvas , this . offset ) , this . bounds . setTo ( this . offset . x , this . offset . y , this . width , this . height ) , this . setGameSize ( this . game . width , this . game . height ) , this . screenOrientation = this . dom . getScreenOrientation ( this . compatibility . orientationFallback ) , this . grid = new c . FlexGrid ( this , this . width , this . height ) } , parseConfig : function ( a ) { a . scaleMode && ( this . scaleMode = a . scaleMode ) , a . fullScreenScaleMode && ( this . fullScreenScaleMode = a . fullScreenScaleMode ) , a . fullScreenTarget && ( this . fullScreenTarget = a . fullScreenTarget ) } , setupScale : function ( a , b ) { var d , e = new c . Rectangle ; "" !== this . game . parent && ( "string" == typeof this . game . parent ? d = document . getElementById ( this . game . parent ) : this . game . parent && 1 === this . game . parent . nodeType && ( d = this . game . parent ) ) , d ? ( this . parentNode = d , this . parentIsWindow = ! 1 , this . getParentBounds ( this . _parentBounds ) , e . width = this . _parentBounds . width , e . height = this . _parentBounds . height , this . offset . set ( this . _parentBounds . x , this . _parentBounds . y ) ) : ( this . parentNode = null , this . parentIsWindow = ! 0 , e . width = this . dom . visualBounds . width , e . height = this . dom . visualBounds . height , this . offset . set ( 0 , 0 ) ) ; var f = 0 , g = 0 ; "number" == typeof a ? f = a : ( this . parentScaleFactor . x = parseInt ( a , 10 ) / 100 , f = e . width * this . parentScaleFactor . x ) , "number" == typeof b ? g = b : ( this . parentScaleFactor . y = parseInt ( b , 10 ) / 100 , g = e . height * this . parentScaleFactor . y ) , this . _gameSize . setTo ( 0 , 0 , f , g ) , this . updateDimensions ( f , g , ! 1 ) } , _gameResumed : function ( ) { this . queueUpdate ( ! 0 ) } , setGameSize : function ( a , b ) { this . _gameSize . setTo ( 0 , 0 , a , b ) , this . currentScaleMode !== c . ScaleManager . RESIZE && this . updateDimensions ( a , b , ! 0 ) , this . queueUpdate ( ! 0 ) } , setUserScale : function ( a , b , c , d ) { this . _userScaleFactor . setTo ( a , b ) , this . _userScaleTrim . setTo ( 0 | c , 0 | d ) , this . queueUpdate ( ! 0 ) } , setResizeCallback : function ( a , b ) { this . onResize = a , this . onResizeContext = b } , signalSizeChange : function ( ) { if ( ! c . Rectangle . sameDimensions ( this , this . _lastReportedCanvasSize ) || ! c . Rectangle . sameDimensions ( this . game , this . _lastReportedGameSize ) ) { var a = this . width , b = this . height ; this . _lastReportedCanvasSize . setTo ( 0 , 0 , a , b ) , this . _lastReportedGameSize . setTo ( 0 , 0 , this . game . width , this . game . height ) , this . grid . onResize ( a , b ) , this . onSizeChange . dispatch ( this , a , b ) , this . currentScaleMode === c . ScaleManager . RESIZE && ( this . game . state . resize ( a , b ) , this . game . load . resize ( a , b ) ) } } , setMinMax : function ( a , b , c , d ) { this . minWidth = a , this . minHeight = b , "undefined" != typeof c && ( this . maxWidth = c ) , "undefined" != typeof d && ( this . maxHeight = d ) } , preUpdate : function ( ) { if ( ! ( this . game . time . time < this . _lastUpdate + this . _updateThrottle ) ) { var a = this . _updateThrottle ; this . _updateThrottleReset = a >= 400 ? 0 : 100 , this . dom . getOffset ( this . game . canvas , this . offset ) ; var b = this . _parentBounds . width , d = this . _pare
} return null } , getPointerFromIdentifier : function ( a ) { for ( var b = 0 ; b < this . pointers . length ; b ++ ) { var c = this . pointers [ b ] ; if ( c . identifier === a ) return c } return null } , getPointerFromId : function ( a ) { for ( var b = 0 ; b < this . pointers . length ; b ++ ) { var c = this . pointers [ b ] ; if ( c . pointerId === a ) return c } return null } , getLocalPosition : function ( a , b , d ) { "undefined" == typeof d && ( d = new c . Point ) ; var e = a . worldTransform , f = 1 / ( e . a * e . d + e . c * - e . b ) ; return d . setTo ( e . d * f * b . x + - e . c * f * b . y + ( e . ty * e . c - e . tx * e . d ) * f , e . a * f * b . y + - e . b * f * b . x + ( - e . ty * e . a + e . tx * e . b ) * f ) } , hitTest : function ( a , b , d ) { if ( ! a . worldVisible ) return ! 1 ; if ( this . getLocalPosition ( a , b , this . _localPoint ) , d . copyFrom ( this . _localPoint ) , a . hitArea && a . hitArea . contains ) return a . hitArea . contains ( this . _localPoint . x , this . _localPoint . y ) ; if ( a instanceof c . TileSprite ) { var e = a . width , f = a . height , g = - e * a . anchor . x ; if ( this . _localPoint . x >= g && this . _localPoint . x < g + e ) { var h = - f * a . anchor . y ; if ( this . _localPoint . y >= h && this . _localPoint . y < h + f ) return ! 0 } } else if ( a instanceof PIXI . Sprite ) { var e = a . texture . frame . width , f = a . texture . frame . height , g = - e * a . anchor . x ; if ( this . _localPoint . x >= g && this . _localPoint . x < g + e ) { var h = - f * a . anchor . y ; if ( this . _localPoint . y >= h && this . _localPoint . y < h + f ) return ! 0 } } else if ( a instanceof c . Graphics ) for ( var i = 0 ; i < a . graphicsData . length ; i ++ ) { var j = a . graphicsData [ i ] ; if ( j . fill && j . shape && j . shape . contains ( this . _localPoint . x , this . _localPoint . y ) ) return ! 0 } for ( var i = 0 , k = a . children . length ; k > i ; i ++ ) if ( this . hitTest ( a . children [ i ] , b , d ) ) return ! 0 ; return ! 1 } , onClickTrampoline : function ( ) { this . activePointer . processClickTrampolines ( ) } } , c . Input . prototype . constructor = c . Input , Object . defineProperty ( c . Input . prototype , "x" , { get : function ( ) { return this . _x } , set : function ( a ) { this . _x = Math . floor ( a ) } } ) , Object . defineProperty ( c . Input . prototype , "y" , { get : function ( ) { return this . _y } , set : function ( a ) { this . _y = Math . floor ( a ) } } ) , Object . defineProperty ( c . Input . prototype , "pollLocked" , { get : function ( ) { return this . pollRate > 0 && this . _pollCounter < this . pollRate } } ) , Object . defineProperty ( c . Input . prototype , "totalInactivePointers" , { get : function ( ) { return this . pointers . length - this . countActivePointers ( ) } } ) , Object . defineProperty ( c . Input . prototype , "totalActivePointers" , { get : function ( ) { return this . countActivePointers ( ) } } ) , Object . defineProperty ( c . Input . prototype , "worldX" , { get : function ( ) { return this . game . camera . view . x + this . x } } ) , Object . defineProperty ( c . Input . prototype , "worldY" , { get : function ( ) { return this . game . camera . view . y + this . y } } ) , Object . defineProperty ( c . Input . prototype , "disabled" , { get : function ( ) { return ! this . enabled } , set : function ( a ) { this . enabled = ! a } } ) , c . Mouse = function ( a ) { this . game = a , this . callbackContext = this . game , this . mouseDownCallback = null , this . mouseMoveCallback = null , this . mouseUpCallback = null , this . mouseOutCallback = null , this . mouseOverCallback = null , this . mouseWheelCallback = null , this . capture = ! 1 , this . button = - 1 , this . wheelDelta = 0 , this . enabled = ! 0 , this . locked = ! 1 , this . stopOnGameOut = ! 1 , this . pointerLock = new c . Signal , this . event = null , this . _onMouseDown = null , this . _onMouseMove = null , this . _onMouseUp = null , this . _onMouseOut = null , this . _onMouseOver = null , this . _onMouseWheel = null , this . _wheelEvent = null } , c . Mouse . NO _BUTTON = - 1 , c . Mouse . LEFT _BUTTON = 0 , c . Mouse . MIDDLE _BUTTON = 1 , c . Mouse . RIGHT _BUTTON = 2 , c . Mouse . WHEEL _UP = 1 , c . Mouse . WHEEL _DOWN = - 1 , c . Mouse . prototype = { start : function ( ) { if ( ( ! this . game . device . android || this . game . device . chrome !== ! 1 ) && null === this . _onMouseDown ) { var b = this ; this . _onMouseDown = function ( a ) { return b . onMouseDown ( a ) } , this . _onMouseMove = function ( a ) { return b . onMouseMove ( a ) } , this . _onMouseUp = function ( a ) { return b . onMouseUp ( a ) } , this . _onMouseUpGlobal = function ( a ) { return b . onMouseUpGlobal ( a ) } , this . _onMouseOut = function ( a ) { return b . onMouseOut ( a ) } , this . _onMouseOver = function ( a ) { return b . onMouseOver ( a ) } , this . _onMouseWheel = function ( a ) { return b . onMouseWheel ( a ) } , this . game . canvas . addEventListener ( "mousedown" , this . _onMouseDown , ! 0 ) , this . game . canvas . addEventListener ( "mousemove" , this . _onMouseMove , ! 0 ) , this . game . canvas . addEventListener ( "mouseup" , this . _onMouseUp , ! 0 ) , this . game . device . cocoonJS || ( window . addEventListener ( "mouseup" , this . _onMouseUpGlobal , ! 0 ) , this . game . canvas . addEventListener ( "mouseover" , this . _onMouseOver , ! 0 ) , this . game . canvas . addEventListener ( " mouseou
} , justOver : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isOver && this . overDuration ( a ) < b } , justOut : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isOut && this . game . time . time - this . _pointerData [ a ] . timeOut < b } , justPressed : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isDown && this . downDuration ( a ) < b } , justReleased : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isUp && this . game . time . time - this . _pointerData [ a ] . timeUp < b } , overDuration : function ( a ) { return a = a || 0 , this . _pointerData [ a ] . isOver ? this . game . time . time - this . _pointerData [ a ] . timeOver : - 1 } , downDuration : function ( a ) { return a = a || 0 , this . _pointerData [ a ] . isDown ? this . game . time . time - this . _pointerData [ a ] . timeDown : - 1 } , enableDrag : function ( a , b , d , e , f , g ) { "undefined" == typeof a && ( a = ! 1 ) , "undefined" == typeof b && ( b = ! 1 ) , "undefined" == typeof d && ( d = ! 1 ) , "undefined" == typeof e && ( e = 255 ) , "undefined" == typeof f && ( f = null ) , "undefined" == typeof g && ( g = null ) , this . _dragPoint = new c . Point , this . draggable = ! 0 , this . bringToTop = b , this . dragOffset = new c . Point , this . dragFromCenter = a , this . pixelPerfectClick = d , this . pixelPerfectAlpha = e , f && ( this . boundsRect = f ) , g && ( this . boundsSprite = g ) } , disableDrag : function ( ) { if ( this . _pointerData ) for ( var a = 0 ; 10 > a ; a ++ ) this . _pointerData [ a ] . isDragged = ! 1 ; this . draggable = ! 1 , this . isDragged = ! 1 , this . _draggedPointerID = - 1 } , startDrag : function ( a ) { var b = this . sprite . x , c = this . sprite . y ; if ( this . isDragged = ! 0 , this . _draggedPointerID = a . id , this . _pointerData [ a . id ] . isDragged = ! 0 , this . sprite . fixedToCamera ) this . dragFromCenter ? ( this . sprite . centerOn ( a . x , a . y ) , this . _dragPoint . setTo ( this . sprite . cameraOffset . x - a . x , this . sprite . cameraOffset . y - a . y ) ) : this . _dragPoint . setTo ( this . sprite . cameraOffset . x - a . x , this . sprite . cameraOffset . y - a . y ) ; else { if ( this . dragFromCenter ) { var d = this . sprite . getBounds ( ) ; this . sprite . x = this . globalToLocalX ( a . x ) + ( this . sprite . x - d . centerX ) , this . sprite . y = this . globalToLocalY ( a . y ) + ( this . sprite . y - d . centerY ) } this . _dragPoint . setTo ( this . sprite . x - this . globalToLocalX ( a . x ) , this . sprite . y - this . globalToLocalY ( a . y ) ) } this . updateDrag ( a ) , this . bringToTop && ( this . _dragPhase = ! 0 , this . sprite . bringToTop ( ) ) , this . dragStartPoint . set ( b , c ) , this . sprite . events . onDragStart$dispatch ( this . sprite , a , b , c ) } , globalToLocalX : function ( a ) { return this . scaleLayer && ( a -= this . game . scale . grid . boundsFluid . x , a *= this . game . scale . grid . scaleFluidInversed . x ) , a } , globalToLocalY : function ( a ) { return this . scaleLayer && ( a -= this . game . scale . grid . boundsFluid . y , a *= this . game . scale . grid . scaleFluidInversed . y ) , a } , stopDrag : function ( a ) { this . isDragged = ! 1 , this . _draggedPointerID = - 1 , this . _pointerData [ a . id ] . isDragged = ! 1 , this . _dragPhase = ! 1 , this . snapOnRelease && ( this . sprite . fixedToCamera ? ( this . sprite . cameraOffset . x = Math . round ( ( this . sprite . cameraOffset . x - this . snapOffsetX % this . snapX ) / this . snapX ) * this . snapX + this . snapOffsetX % this . snapX , this . sprite . cameraOffset . y = Math . round ( ( this . sprite . cameraOffset . y - this . snapOffsetY % this . snapY ) / this . snapY ) * this . snapY + this . snapOffsetY % this . snapY ) : ( this . sprite . x = Math . round ( ( this . sprite . x - this . snapOffsetX % this . snapX ) / this . snapX ) * this . snapX + this . snapOffsetX % this . snapX , this . sprite . y = Math . round ( ( this . sprite . y - this . snapOffsetY % this . snapY ) / this . snapY ) * this . snapY + this . snapOffsetY % this . snapY ) ) , this . sprite . events . onDragStop$dispatch ( this . sprite , a ) , this . checkPointerOver ( a ) === ! 1 && this . _pointerOutHandler ( a ) } , setDragLock : function ( a , b ) { "undefined" == typeof a && ( a = ! 0 ) , "undefined" == typeof b && ( b = ! 0 ) , this . allowHorizontalDrag = a , this . allowVerticalDrag = b } , enableSnap : function ( a , b , c , d , e , f ) { "undefined" == typeof c && ( c = ! 0 ) , "undefined" == typeof d && ( d = ! 1 ) , "undefined" == typeof e && ( e = 0 ) , "undefined" == typeof f && ( f = 0 ) , this . snapX = a , this . snapY = b , this . snapOffsetX = e , this . snapOffsetY = f , this . snapOnDrag = c , this . snapOnRelease = d } , disableSnap : function ( ) { this . snapOnDrag = ! 1 , this . snapOnRelease = ! 1 } , checkBoundsRect : function ( ) { this . sprite . fixedToCamera ? ( this . sprite . cameraOffset . x < this . boundsRect . left ? this . sprite . cameraOffset . x = this . boundsRect . left : this . sprite . cameraOffset . x + this . sprite . width > this . boundsRect . right && ( this . sprite . cameraOffset . x = this . boundsRect . right - this . sprite . width ) , this . sprite . cameraOffset . y < this . boundsRect . top ? this . sprite . cameraOffset . y = this . boundsRect . top : this . sprite . cam
} } } , c . Events = function ( a ) { this . parent = a } , c . Events . prototype = { destroy : function ( ) { this . _parent = null , this . _onDestroy && this . _onDestroy . dispose ( ) , this . _onAddedToGroup && this . _onAddedToGroup . dispose ( ) , this . _onRemovedFromGroup && this . _onRemovedFromGroup . dispose ( ) , this . _onRemovedFromWorld && this . _onRemovedFromWorld . dispose ( ) , this . _onKilled && this . _onKilled . dispose ( ) , this . _onRevived && this . _onRevived . dispose ( ) , this . _onEnterBounds && this . _onEnterBounds . dispose ( ) , this . _onOutOfBounds && this . _onOutOfBounds . dispose ( ) , this . _onInputOver && this . _onInputOver . dispose ( ) , this . _onInputOut && this . _onInputOut . dispose ( ) , this . _onInputDown && this . _onInputDown . dispose ( ) , this . _onInputUp && this . _onInputUp . dispose ( ) , this . _onDragStart && this . _onDragStart . dispose ( ) , this . _onDragStop && this . _onDragStop . dispose ( ) , this . _onAnimationStart && this . _onAnimationStart . dispose ( ) , this . _onAnimationComplete && this . _onAnimationComplete . dispose ( ) , this . _onAnimationLoop && this . _onAnimationLoop . dispose ( ) } , onAddedToGroup : null , onRemovedFromGroup : null , onRemovedFromWorld : null , onDestroy : null , onKilled : null , onRevived : null , onOutOfBounds : null , onEnterBounds : null , onInputOver : null , onInputOut : null , onInputDown : null , onInputUp : null , onDragStart : null , onDragStop : null , onAnimationStart : null , onAnimationComplete : null , onAnimationLoop : null } , c . Events . prototype . constructor = c . Events ; for ( var e in c . Events . prototype ) c . Events . prototype . hasOwnProperty ( e ) && 0 === e . indexOf ( "on" ) && null === c . Events . prototype [ e ] && ! function ( a , b ) { "use strict" ; Object . defineProperty ( c . Events . prototype , a , { get : function ( ) { return this [ b ] || ( this [ b ] = new c . Signal ) } } ) , c . Events . prototype [ a + "$dispatch" ] = function ( ) { return this [ b ] ? this [ b ] . dispatch . apply ( this [ b ] , arguments ) : null } } ( e , "_" + e ) ; c . Component . FixedToCamera = function ( ) { } , c . Component . FixedToCamera . postUpdate = function ( ) { this . fixedToCamera && ( this . position . x = ( this . game . camera . view . x + this . cameraOffset . x ) / this . game . camera . scale . x , this . position . y = ( this . game . camera . view . y + this . cameraOffset . y ) / this . game . camera . scale . y ) } , c . Component . FixedToCamera . prototype = { _fixedToCamera : ! 1 , fixedToCamera : { get : function ( ) { return this . _fixedToCamera } , set : function ( a ) { a ? ( this . _fixedToCamera = ! 0 , this . cameraOffset . set ( this . x , this . y ) ) : this . _fixedToCamera = ! 1 } } , cameraOffset : new c . Point } , c . Component . Health = function ( ) { } , c . Component . Health . prototype = { health : 1 , damage : function ( a ) { return this . alive && ( this . health -= a , this . health <= 0 && this . kill ( ) ) , this } } , c . Component . InCamera = function ( ) { } , c . Component . InCamera . prototype = { inCamera : { get : function ( ) { return this . game . world . camera . view . intersects ( this . _bounds ) } } } , c . Component . InputEnabled = function ( ) { } , c . Component . InputEnabled . prototype = { input : null , inputEnabled : { get : function ( ) { return this . input && this . input . enabled } , set : function ( a ) { a ? null === this . input ? ( this . input = new c . InputHandler ( this ) , this . input . start ( ) ) : this . input && ! this . input . enabled && this . input . start ( ) : this . input && this . input . enabled && this . input . stop ( ) } } } , c . Component . InWorld = function ( ) { } , c . Component . InWorld . preUpdate = function ( ) { if ( ( this . autoCull || this . checkWorldBounds ) && ( this . _bounds . copyFrom ( this . getBounds ( ) ) , this . _bounds . x += this . game . camera . view . x , this . _bounds . y += this . game . camera . view . y , this . autoCull && ( this . game . world . camera . view . intersects ( this . _bounds ) ? ( this . renderable = ! 0 , this . game . world . camera . totalInView ++ ) : this . renderable = ! 1 ) , this . checkWorldBounds ) ) if ( this . _outOfBoundsFired && this . game . world . bounds . intersects ( this . _bounds ) ) this . _outOfBoundsFired = ! 1 , this . events . onEnterBounds$dispatch ( this ) ; else if ( ! this . _outOfBoundsFired && ! this . game . world . bounds . intersects ( this . _bounds ) && ( this . _outOfBoundsFired = ! 0 , this . events . onOutOfBounds$dispatch ( this ) , this . outOfBoundsKill ) ) return this . kill ( ) , ! 1 ; return ! 0 } , c . Component . InWorld . prototype = { checkWorldBounds : ! 1 , outOfBoundsKill : ! 1 , _outOfBoundsFired : ! 1 , inWorld : { get : function ( ) { return this . game . world . bounds . intersects ( this . getBounds ( ) ) } } } , c . Component . LifeSpan = function ( ) { } , c . Component . LifeSpan . preUpdate = function ( ) { return this . lifespan > 0 && ( this . lifespan -= this . game . time . physicsElapsedMS , this . lifespan <= 0 ) ? ( this . kill ( ) , ! 1 ) : ! 0 } , c . Component . LifeSpan . prototype = { alive : ! 0 , lifespan : 0 , revive : function ( a ) { return "undefined" == typeof a && ( a = 1 ) ,
} , copyRect : function ( a , b , c , d , e , f , g ) { return this . copy ( a , b . x , b . y , b . width , b . height , c , d , b . width , b . height , 0 , 0 , 0 , 1 , 1 , e , f , g ) } , draw : function ( a , b , c , d , e , f , g ) { return this . copy ( a , null , null , null , null , b , c , d , e , null , null , null , null , null , null , f , g ) } , drawGroup : function ( a , b , c ) { return a . total > 0 && a . forEachExists ( this . copy , this , null , null , null , null , null , null , null , null , null , null , null , null , null , null , b , c ) , this } , shadow : function ( a , b , c , d ) { "undefined" == typeof a || null === a ? this . context . shadowColor = "rgba(0,0,0,0)" : ( this . context . shadowColor = a , this . context . shadowBlur = b || 5 , this . context . shadowOffsetX = c || 10 , this . context . shadowOffsetY = d || 10 ) } , alphaMask : function ( a , b , c , d ) { return "undefined" == typeof d || null === d ? this . draw ( b ) . blendSourceAtop ( ) : this . draw ( b , d . x , d . y , d . width , d . height ) . blendSourceAtop ( ) , "undefined" == typeof c || null === c ? this . draw ( a ) . blendReset ( ) : this . draw ( a , c . x , c . y , c . width , c . height ) . blendReset ( ) , this } , extract : function ( a , b , c , d , e , f , g , h , i ) { return "undefined" == typeof e && ( e = 255 ) , "undefined" == typeof f && ( f = ! 1 ) , "undefined" == typeof g && ( g = b ) , "undefined" == typeof h && ( h = c ) , "undefined" == typeof i && ( i = d ) , f && a . resize ( this . width , this . height ) , this . processPixelRGB ( function ( f , j , k ) { return f . r === b && f . g === c && f . b === d && a . setPixel32 ( j , k , g , h , i , e , ! 1 ) , ! 1 } , this ) , a . context . putImageData ( a . imageData , 0 , 0 ) , a . dirty = ! 0 , a } , rect : function ( a , b , c , d , e ) { return "undefined" != typeof e && ( this . context . fillStyle = e ) , this . context . fillRect ( a , b , c , d ) , this } , text : function ( a , b , c , d , e , f ) { "undefined" == typeof b && ( b = 0 ) , "undefined" == typeof c && ( c = 0 ) , "undefined" == typeof d && ( d = "14px Courier" ) , "undefined" == typeof e && ( e = "rgb(255,255,255)" ) , "undefined" == typeof f && ( f = ! 0 ) ; var g = this . context . font ; this . context . font = d , f && ( this . context . fillStyle = "rgb(0,0,0)" , this . context . fillText ( a , b + 1 , c + 1 ) ) , this . context . fillStyle = e , this . context . fillText ( a , b , c ) , this . context . font = g } , circle : function ( a , b , c , d ) { return "undefined" != typeof d && ( this . context . fillStyle = d ) , this . context . beginPath ( ) , this . context . arc ( a , b , c , 0 , 2 * Math . PI , ! 1 ) , this . context . closePath ( ) , this . context . fill ( ) , this } , textureLine : function ( a , b , d ) { if ( "undefined" == typeof d && ( d = "repeat-x" ) , "string" != typeof b || ( b = this . game . cache . getImage ( b ) ) ) { var e = a . length ; return "no-repeat" === d && e > b . width && ( e = b . width ) , this . context . fillStyle = this . context . createPattern ( b , d ) , this . _circle = new c . Circle ( a . start . x , a . start . y , b . height ) , this . _circle . circumferencePoint ( a . angle - 1.5707963267948966 , ! 1 , this . _pos ) , this . context . save ( ) , this . context . translate ( this . _pos . x , this . _pos . y ) , this . context . rotate ( a . angle ) , this . context . fillRect ( 0 , 0 , e , b . height ) , this . context . restore ( ) , this . dirty = ! 0 , this } } , render : function ( ) { return ! this . disableTextureUpload && this . dirty && ( this . baseTexture . dirty ( ) , this . dirty = ! 1 ) , this } , blendReset : function ( ) { return this . context . globalCompositeOperation = "source-over" , this } , blendSourceOver : function ( ) { return this . context . globalCompositeOperation = "source-over" , this } , blendSourceIn : function ( ) { return this . context . globalCompositeOperation = "source-in" , this } , blendSourceOut : function ( ) { return this . context . globalCompositeOperation = "source-out" , this } , blendSourceAtop : function ( ) { return this . context . globalCompositeOperation = "source-atop" , this } , blendDestinationOver : function ( ) { return this . context . globalCompositeOperation = "destination-over" , this } , blendDestinationIn : function ( ) { return this . context . globalCompositeOperation = "destination-in" , this } , blendDestinationOut : function ( ) { return this . context . globalCompositeOperation = "destination-out" , this } , blendDestinationAtop : function ( ) { return this . context . globalCompositeOperation = "destination-atop" , this } , blendXor : function ( ) { return this . context . globalCompositeOperation = "xor" , this } , blendAdd : function ( ) { return this . context . globalCompositeOperation = "lighter" , this } , blendMultiply : function ( ) { return this . context . globalCompositeOperation = "multiply" , this } , blendScreen : function ( ) { return this . context . globalCompositeOperation = "screen" , this } , blendOverlay : function ( ) { return this . context . globalCompositeOperation = "overlay" , this } , blendDarken : function ( ) { return this . context . globalCompositeOperation = "darken" , this } , blendLighten : function ( ) { return this . context . globalCompositeOperation = "lighten" , this } , blendColorDodge : function ( ) { re
break } window . Element && Element . ALLOW _KEYBOARD _INPUT && ( l . fullscreenKeyboard = ! 0 ) } function e ( ) { var a = navigator . userAgent ; if ( /Arora/ . test ( a ) ? l . arora = ! 0 : /Chrome/ . test ( a ) ? l . chrome = ! 0 : /Epiphany/ . test ( a ) ? l . epiphany = ! 0 : /Firefox/ . test ( a ) ? l . firefox = ! 0 : /AppleWebKit/ . test ( a ) && l . iOS ? l . mobileSafari = ! 0 : /MSIE (\d+\.\d+);/ . test ( a ) ? ( l . ie = ! 0 , l . ieVersion = parseInt ( RegExp . $1 , 10 ) ) : /Midori/ . test ( a ) ? l . midori = ! 0 : /Opera/ . test ( a ) ? l . opera = ! 0 : /Safari/ . test ( a ) ? l . safari = ! 0 : /Trident\/(\d+\.\d+)(.*)rv:(\d+\.\d+)/ . test ( a ) && ( l . ie = ! 0 , l . trident = ! 0 , l . tridentVersion = parseInt ( RegExp . $1 , 10 ) , l . ieVersion = parseInt ( RegExp . $3 , 10 ) ) , /Silk/ . test ( a ) && ( l . silk = ! 0 ) , navigator . standalone && ( l . webApp = ! 0 ) , "undefined" != typeof window . cordova && ( l . cordova = ! 0 ) , "undefined" != typeof process && "undefined" != typeof require && ( l . node = ! 0 ) , l . node ) try { l . nodeWebkit = "undefined" != typeof require ( "nw.gui" ) } catch ( b ) { l . nodeWebkit = ! 1 } if ( navigator . isCocoonJS && ( l . cocoonJS = ! 0 ) , l . cocoonJS ) try { l . cocoonJSApp = "undefined" != typeof CocoonJS } catch ( b ) { l . cocoonJSApp = ! 1 } "undefined" != typeof window . ejecta && ( l . ejecta = ! 0 ) , /Crosswalk/ . test ( a ) && ( l . crosswalk = ! 0 ) } function f ( ) { var a = document . createElement ( "video" ) , b = ! 1 ; try { ( b = ! ! a . canPlayType ) && ( a . canPlayType ( 'video/ogg; codecs="theora"' ) . replace ( /^no$/ , "" ) && ( l . oggVideo = ! 0 ) , a . canPlayType ( 'video/mp4; codecs="avc1.42E01E"' ) . replace ( /^no$/ , "" ) && ( l . h264Video = ! 0 , l . mp4Video = ! 0 ) , a . canPlayType ( 'video/webm; codecs="vp8, vorbis"' ) . replace ( /^no$/ , "" ) && ( l . webmVideo = ! 0 ) , a . canPlayType ( 'video/webm; codecs="vp9"' ) . replace ( /^no$/ , "" ) && ( l . vp9Video = ! 0 ) , a . canPlayType ( 'application/x-mpegURL; codecs="avc1.42E01E"' ) . replace ( /^no$/ , "" ) && ( l . hlsVideo = ! 0 ) ) } catch ( c ) { } } function g ( ) { l . audioData = ! ! window . Audio , l . webAudio = ! ( ! window . AudioContext && ! window . webkitAudioContext ) ; var a = document . createElement ( "audio" ) , b = ! 1 ; try { ( b = ! ! a . canPlayType ) && ( a . canPlayType ( 'audio/ogg; codecs="vorbis"' ) . replace ( /^no$/ , "" ) && ( l . ogg = ! 0 ) , ( a . canPlayType ( 'audio/ogg; codecs="opus"' ) . replace ( /^no$/ , "" ) || a . canPlayType ( "audio/opus;" ) . replace ( /^no$/ , "" ) ) && ( l . opus = ! 0 ) , a . canPlayType ( "audio/mpeg;" ) . replace ( /^no$/ , "" ) && ( l . mp3 = ! 0 ) , a . canPlayType ( 'audio/wav; codecs="1"' ) . replace ( /^no$/ , "" ) && ( l . wav = ! 0 ) , ( a . canPlayType ( "audio/x-m4a;" ) || a . canPlayType ( "audio/aac;" ) . replace ( /^no$/ , "" ) ) && ( l . m4a = ! 0 ) , a . canPlayType ( 'audio/webm; codecs="vorbis"' ) . replace ( /^no$/ , "" ) && ( l . webm = ! 0 ) ) } catch ( c ) { } } function h ( ) { l . pixelRatio = window . devicePixelRatio || 1 , l . iPhone = - 1 != navigator . userAgent . toLowerCase ( ) . indexOf ( "iphone" ) , l . iPhone4 = 2 == l . pixelRatio && l . iPhone , l . iPad = - 1 != navigator . userAgent . toLowerCase ( ) . indexOf ( "ipad" ) , l . typedArray = "undefined" != typeof Int8Array ? ! 0 : ! 1 , "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array && "undefined" != typeof Uint32Array && ( l . littleEndian = i ( ) , l . LITTLE _ENDIAN = l . littleEndian ) , l . support32bit = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8ClampedArray && "undefined" != typeof Int32Array && null !== l . littleEndian && j ( ) , navigator . vibrate = navigator . vibrate || navigator . webkitVibrate || navigator . mozVibrate || navigator . msVibrate , navigator . vibrate && ( l . vibration = ! 0 ) } function i ( ) { var a = new ArrayBuffer ( 4 ) , b = new Uint8Array ( a ) , c = new Uint32Array ( a ) ; return b [ 0 ] = 161 , b [ 1 ] = 178 , b [ 2 ] = 195 , b [ 3 ] = 212 , 3569595041 == c [ 0 ] ? ! 0 : 2712847316 == c [ 0 ] ? ! 1 : null } function j ( ) { if ( "undefined" == typeof Uint8ClampedArray ) return ! 1 ; var a = document . createElement ( "canvas" ) , b = a . getContext ( "2d" ) ; if ( ! b ) return ! 1 ; var c = b . createImageData ( 1 , 1 ) ; return c . data instanceof Uint8ClampedArray } function k ( ) { var a , b = document . createElement ( "p" ) , c = { webkitTransform : "-webkit-transform" , OTransform : "-o-transform" , msTransform : "-ms-transform" , MozTransform : "-moz-transform" , transform : "transform" } ; document . body . insertBefore ( b , null ) ; for ( var d in c ) void 0 !== b . style [ d ] && ( b . style [ d ] = "translate3d(1px,1px,1px)" , a = window . getComputedStyle ( b ) . getPropertyValue ( c [ d ] ) ) ; document . body . removeChild ( b ) , l . css3D = void 0 !== a && a . length > 0 && "none" !== a } var l = this ; a ( ) , g ( ) , f ( ) , e ( ) , k ( ) , h ( ) , b ( ) , d ( ) , c ( ) } , c . Device . canPlayAudio = function ( a ) { return "mp3" === a && this . mp3 ? ! 0 : "ogg" === a && ( this . ogg || this . opus ) ? ! 0 : "m4a" === a && this . m4a ? ! 0 : "opus" === a && this . opus ? ! 0 : "wav" === a && this . wav ? ! 0 : "webm" === a && this . webm ? ! 0 : ! 1 } , c . Device . canPlayVideo = function ( a ) { return "webm" ==
for ( var c = 0 ; c < this . timeline . length ; c ++ ) b = b . concat ( this . timeline [ c ] . generateData ( a ) ) ; return b } } , Object . defineProperty ( c . Tween . prototype , "totalDuration" , { get : function ( ) { for ( var a = 0 , b = 0 ; b < this . timeline . length ; b ++ ) a += this . timeline [ b ] . duration ; return a } } ) , c . Tween . prototype . constructor = c . Tween , c . TweenData = function ( a ) { this . parent = a , this . game = a . game , this . vStart = { } , this . vStartCache = { } , this . vEnd = { } , this . vEndCache = { } , this . duration = 1e3 , this . percent = 0 , this . value = 0 , this . repeatCounter = 0 , this . repeatDelay = 0 , this . interpolate = ! 1 , this . yoyo = ! 1 , this . yoyoDelay = 0 , this . inReverse = ! 1 , this . delay = 0 , this . dt = 0 , this . startTime = null , this . easingFunction = c . Easing . Default , this . interpolationFunction = c . Math . linearInterpolation , this . interpolationContext = c . Math , this . isRunning = ! 1 , this . isFrom = ! 1 } , c . TweenData . PENDING = 0 , c . TweenData . RUNNING = 1 , c . TweenData . LOOPED = 2 , c . TweenData . COMPLETE = 3 , c . TweenData . prototype = { to : function ( a , b , c , d , e , f ) { return this . vEnd = a , this . duration = b , this . easingFunction = c , this . delay = d , this . repeatCounter = e , this . yoyo = f , this . isFrom = ! 1 , this } , from : function ( a , b , c , d , e , f ) { return this . vEnd = a , this . duration = b , this . easingFunction = c , this . delay = d , this . repeatCounter = e , this . yoyo = f , this . isFrom = ! 0 , this } , start : function ( ) { if ( this . startTime = this . game . time . time + this . delay , this . dt = this . parent . reverse ? this . duration : 0 , this . isRunning = this . delay > 0 ? ! 1 : ! 0 , this . isFrom ) for ( var a in this . vStartCache ) this . vStart [ a ] = this . vEndCache [ a ] , this . vEnd [ a ] = this . vStartCache [ a ] , this . parent . target [ a ] = this . vStart [ a ] ; return this . value = 0 , this . yoyoCounter = 0 , this } , loadValues : function ( ) { for ( var a in this . parent . properties ) { if ( this . vStart [ a ] = this . parent . properties [ a ] , Array . isArray ( this . vEnd [ a ] ) ) { if ( 0 === this . vEnd [ a ] . length ) continue ; this . vEnd [ a ] = [ this . vStart [ a ] ] . concat ( this . vEnd [ a ] ) } "undefined" != typeof this . vEnd [ a ] ? ( "string" == typeof this . vEnd [ a ] && ( this . vEnd [ a ] = this . vStart [ a ] + parseFloat ( this . vEnd [ a ] , 10 ) ) , this . parent . properties [ a ] = this . vEnd [ a ] ) : this . vEnd [ a ] = this . vStart [ a ] , this . vStartCache [ a ] = this . vStart [ a ] , this . vEndCache [ a ] = this . vEnd [ a ] } return this } , update : function ( ) { if ( this . isRunning ) { if ( this . game . time . time < this . startTime ) return c . TweenData . RUNNING } else { if ( ! ( this . game . time . time >= this . startTime ) ) return c . TweenData . PENDING ; this . isRunning = ! 0 } this . parent . reverse ? ( this . dt -= this . game . time . physicsElapsedMS * this . parent . timeScale , this . dt = Math . max ( this . dt , 0 ) ) : ( this . dt += this . game . time . physicsElapsedMS * this . parent . timeScale , this . dt = Math . min ( this . dt , this . duration ) ) , this . percent = this . dt / this . duration , this . value = this . easingFunction ( this . percent ) ; for ( var a in this . vEnd ) { var b = this . vStart [ a ] , d = this . vEnd [ a ] ; this . parent . target [ a ] = Array . isArray ( d ) ? this . interpolationFunction . call ( this . interpolationContext , d , this . value ) : b + ( d - b ) * this . value } return ! this . parent . reverse && 1 === this . percent || this . parent . reverse && 0 === this . percent ? this . repeat ( ) : c . TweenData . RUNNING } , generateData : function ( a ) { this . dt = this . parent . reverse ? this . duration : 0 ; var b = [ ] , c = ! 1 , d = 1 / a * 1e3 ; do { this . parent . reverse ? ( this . dt -= d , this . dt = Math . max ( this . dt , 0 ) ) : ( this . dt += d , this . dt = Math . min ( this . dt , this . duration ) ) , this . percent = this . dt / this . duration , this . value = this . easingFunction ( this . percent ) ; var e = { } ; for ( var f in this . vEnd ) { var g = this . vStart [ f ] , h = this . vEnd [ f ] ; e [ f ] = Array . isArray ( h ) ? this . interpolationFunction ( h , this . value ) : g + ( h - g ) * this . value } b . push ( e ) , ( ! this . parent . reverse && 1 === this . percent || this . parent . reverse && 0 === this . percent ) && ( c = ! 0 ) } while ( ! c ) ; if ( this . yoyo ) { var i = b . slice ( ) ; i . reverse ( ) , b = b . concat ( i ) } return b } , repeat : function ( ) { if ( this . yoyo ) { if ( this . inReverse && 0 === this . repeatCounter ) return c . TweenData . COMPLETE ; this . inReverse = ! this . inReverse } else if ( 0 === this . repeatCounter ) return c . TweenData . COMPLETE ; if ( this . inReverse ) for ( var a in this . vStartCache ) this . vStart [ a ] = this . vEndCache [ a ] , this . vEnd [ a ] = this . vStartCache [ a ] ; else { for ( var a in this . vStartCache ) this . vStart [ a ] = this . vStartCache [ a ] , this . vEnd [ a ] = this . vEndCache [ a ] ; this . repeatCounter > 0 && this . repeatCounter -- } return this . startTime = this . game . time . time , this . yoyo && this . inReverse ? this . startTime += this . yoyoDelay : this . inReverse || ( this . startTime += this . repeatDelay ) , this . dt = this . parent . reverse ? this . duration : 0 , c . TweenData . LOOPED } } , c . TweenData . pro
} , addBitmapFont : function ( a , b , d , e , f , g ) { this . _images [ a ] = { url : b , data : d } , PIXI . BaseTextureCache [ a ] = new PIXI . BaseTexture ( d ) , c . LoaderParser . bitmapFont ( this . game , e , a , f , g ) , this . _bitmapFont [ a ] = PIXI . BitmapText . fonts [ a ] , this . _resolveURL ( b , this . _bitmapFont [ a ] ) } , addPhysicsData : function ( a , b , c , d ) { this . _physics [ a ] = { url : b , data : c , format : d } , this . _resolveURL ( b , this . _physics [ a ] ) } , addDefaultImage : function ( ) { var a = new Image ; a . src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAABVJREFUeF7NwIEAAAAAgKD9qdeocAMAoAABm3DkcAAAAABJRU5ErkJggg==" , this . _images . _ _default = { url : null , data : a } , this . _images . _ _default . frame = new c . Frame ( 0 , 0 , 0 , 32 , 32 , "" , "" ) , this . _images . _ _default . frameData = new c . FrameData , this . _images . _ _default . frameData . addFrame ( new c . Frame ( 0 , 0 , 0 , 32 , 32 , null , this . game . rnd . uuid ( ) ) ) , PIXI . BaseTextureCache . _ _default = new PIXI . BaseTexture ( a ) , PIXI . TextureCache . _ _default = new PIXI . Texture ( PIXI . BaseTextureCache . _ _default ) } , addMissingImage : function ( ) { var a = new Image ; a . src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUeNq01ssOwyAMRFG46v//Mt1ESmgh+DFmE2GPOBARKb2NVjo+17PXLD8a1+pl5+A+wSgFygymWYHBb0FtsKhJDdZlncG2IzJ4ayoMDv20wTmSMzClEgbWYNTAkQ0Z+OJ+A/eWnAaR9+oxCF4Os0H8htsMUp+pwcgBBiMNnAwF8GqIgL2hAzaGFFgZauDPKABmowZ4GL369/0rwACp2yA/ttmvsQAAAABJRU5ErkJggg==" , this . _images . _ _missing = { url : null , data : a } , this . _images . _ _missing . frame = new c . Frame ( 0 , 0 , 0 , 32 , 32 , "" , "" ) , this . _images . _ _missing . frameData = new c . FrameData , this . _images . _ _missing . frameData . addFrame ( new c . Frame ( 0 , 0 , 0 , 32 , 32 , null , this . game . rnd . uuid ( ) ) ) , PIXI . BaseTextureCache . _ _missing = new PIXI . BaseTexture ( a ) , PIXI . TextureCache . _ _missing = new PIXI . Texture ( PIXI . BaseTextureCache . _ _missing ) } , addText : function ( a , b , c ) { this . _text [ a ] = { url : b , data : c } , this . _resolveURL ( b , this . _text [ a ] ) } , addJSON : function ( a , b , c ) { this . _json [ a ] = { url : b , data : c } , this . _resolveURL ( b , this . _json [ a ] ) } , addXML : function ( a , b , c ) { this . _xml [ a ] = { url : b , data : c } , this . _resolveURL ( b , this . _xml [ a ] ) } , addImage : function ( a , b , d ) { this . checkImageKey ( a ) && this . removeImage ( a ) , this . _images [ a ] = { url : b , data : d } , this . _images [ a ] . frame = new c . Frame ( 0 , 0 , 0 , d . width , d . height , a , this . game . rnd . uuid ( ) ) , this . _images [ a ] . frameData = new c . FrameData , this . _images [ a ] . frameData . addFrame ( new c . Frame ( 0 , 0 , 0 , d . width , d . height , b , this . game . rnd . uuid ( ) ) ) , PIXI . BaseTextureCache [ a ] = new PIXI . BaseTexture ( d ) , this . _resolveURL ( b , this . _images [ a ] ) } , addSound : function ( a , b , c , d , e ) { d = d || ! 0 , e = e || ! 1 ; var f = ! 1 ; e && ( f = ! 0 ) , this . _sounds [ a ] = { url : b , data : c , isDecoding : ! 1 , decoded : f , webAudio : d , audioTag : e , locked : this . game . sound . touchLocked } , this . _resolveURL ( b , this . _sounds [ a ] ) } , reloadSound : function ( a ) { var b = this ; this . _sounds [ a ] && ( this . _sounds [ a ] . data . src = this . _sounds [ a ] . url , this . _sounds [ a ] . data . addEventListener ( "canplaythrough" , function ( ) { return b . reloadSoundComplete ( a ) } , ! 1 ) , this . _sounds [ a ] . data . load ( ) ) } , reloadSoundComplete : function ( a ) { this . _sounds [ a ] && ( this . _sounds [ a ] . locked = ! 1 , this . onSoundUnlock . dispatch ( a ) ) } , updateSound : function ( a , b , c ) { this . _sounds [ a ] && ( this . _sounds [ a ] [ b ] = c ) } , decodedSound : function ( a , b ) { this . _sounds [ a ] . data = b , this . _sounds [ a ] . decoded = ! 0 , this . _sounds [ a ] . isDecoding = ! 1 } , addVideo : function ( a , b , c , d ) { this . _videos [ a ] = { url : b , data : c , isBlob : d , locked : ! 0 } , this . _resolveURL ( b , this . _videos [ a ] ) } , checkKey : function ( a , b ) { return this . _cacheMap [ a ] [ b ] ? ! 0 : ! 1 } , checkCanvasKey : function ( a ) { return this . checkKey ( c . Cache . CANVAS , a ) } , checkImageKey : function ( a ) { return this . checkKey ( c . Cache . IMAGE , a ) } , checkTextureKey : function ( a ) { return this . checkKey ( c . Cache . TEXTURE , a ) } , checkSoundKey : function ( a ) { return this . checkKey ( c . Cache . SOUND , a ) } , checkVideoKey : function ( a ) { return this . checkKey ( c . Cache . VIDEO , a ) } , checkTextKey : function ( a ) { return this . checkKey ( c . Cache . TEXT , a ) } , checkPhysicsKey : function ( a ) { return this . checkKey ( c . Cache . PHYSICS , a ) } , checkTilemapKey : function ( a ) { return this . checkKey ( c . Cache . TILEMAP , a ) } , checkBinaryKey : function ( a ) { return this . checkKey ( c . Cache . BINARY , a ) } , checkBitmapDataKey : function ( a ) { return this . checkKey ( c . Cache . BITMAPDATA , a ) } , checkBitmapFontKey : function ( a ) { return this . checkKey ( c . Cache . BITMAPFONT , a ) } , checkJSONKey : function ( a ) { retu
for ( var c in this . config . spritemap ) { var d = this . config . spritemap [ c ] , e = this . game . add . sound ( this . key ) ; e . addMarker ( c , d . start , d . end - d . start , null , d . loop ) , this . sounds [ c ] = e } this . config . autoplay && ( this . autoplayKey = this . config . autoplay , this . play ( this . autoplayKey ) , this . autoplay = this . sounds [ this . autoplayKey ] ) } , c . AudioSprite . prototype = { play : function ( a , b ) { return "undefined" == typeof b && ( b = 1 ) , this . sounds [ a ] . play ( a , null , b ) } , stop : function ( a ) { if ( a ) this . sounds [ a ] . stop ( ) ; else for ( var b in this . sounds ) this . sounds [ b ] . stop ( ) } , get : function ( a ) { return this . sounds [ a ] } } , c . AudioSprite . prototype . constructor = c . AudioSprite , c . Sound = function ( a , b , d , e , f ) { "undefined" == typeof d && ( d = 1 ) , "undefined" == typeof e && ( e = ! 1 ) , "undefined" == typeof f && ( f = a . sound . connectToMaster ) , this . game = a , this . name = b , this . key = b , this . loop = e , this . volume = d , this . markers = { } , this . context = null , this . autoplay = ! 1 , this . totalDuration = 0 , this . startTime = 0 , this . currentTime = 0 , this . duration = 0 , this . durationMS = 0 , this . position = 0 , this . stopTime = 0 , this . paused = ! 1 , this . pausedPosition = 0 , this . pausedTime = 0 , this . isPlaying = ! 1 , this . currentMarker = "" , this . fadeTween = null , this . pendingPlayback = ! 1 , this . override = ! 1 , this . allowMultiple = ! 1 , this . usingWebAudio = this . game . sound . usingWebAudio , this . usingAudioTag = this . game . sound . usingAudioTag , this . externalNode = null , this . masterGainNode = null , this . gainNode = null , this . _sound = null , this . usingWebAudio ? ( this . context = this . game . sound . context , this . masterGainNode = this . game . sound . masterGain , this . gainNode = "undefined" == typeof this . context . createGain ? this . context . createGainNode ( ) : this . context . createGain ( ) , this . gainNode . gain . value = d * this . game . sound . volume , f && this . gainNode . connect ( this . masterGainNode ) ) : this . usingAudioTag && ( this . game . cache . getSound ( b ) && this . game . cache . isSoundReady ( b ) ? ( this . _sound = this . game . cache . getSoundData ( b ) , this . totalDuration = 0 , this . _sound . duration && ( this . totalDuration = this . _sound . duration ) ) : this . game . cache . onSoundUnlock . add ( this . soundHasUnlocked , this ) ) , this . onDecoded = new c . Signal , this . onPlay = new c . Signal , this . onPause = new c . Signal , this . onResume = new c . Signal , this . onLoop = new c . Signal , this . onStop = new c . Signal , this . onMute = new c . Signal , this . onMarkerComplete = new c . Signal , this . onFadeComplete = new c . Signal , this . _volume = d , this . _buffer = null , this . _muted = ! 1 , this . _tempMarker = 0 , this . _tempPosition = 0 , this . _tempVolume = 0 , this . _muteVolume = 0 , this . _tempLoop = 0 , this . _paused = ! 1 , this . _onDecodedEventDispatched = ! 1 } , c . Sound . prototype = { soundHasUnlocked : function ( a ) { a === this . key && ( this . _sound = this . game . cache . getSoundData ( this . key ) , this . totalDuration = this . _sound . duration ) } , addMarker : function ( a , b , c , d , e ) { "undefined" == typeof d && ( d = 1 ) , "undefined" == typeof e && ( e = ! 1 ) , this . markers [ a ] = { name : a , start : b , stop : b + c , volume : d , duration : c , durationMS : 1e3 * c , loop : e } } , removeMarker : function ( a ) { delete this . markers [ a ] } , onEndedHandler : function ( ) { this . isPlaying = ! 1 , this . stop ( ) } , update : function ( ) { this . isDecoded && ! this . _onDecodedEventDispatched && ( this . onDecoded . dispatch ( this ) , this . _onDecodedEventDispatched = ! 0 ) , this . pendingPlayback && this . game . cache . isSoundReady ( this . key ) && ( this . pendingPlayback = ! 1 , this . play ( this . _tempMarker , this . _tempPosition , this . _tempVolume , this . _tempLoop ) ) , this . isPlaying && ( this . currentTime = this . game . time . time - this . startTime , this . currentTime >= this . durationMS && ( this . usingWebAudio ? this . loop ? ( this . onLoop . dispatch ( this ) , "" === this . currentMarker ? ( this . currentTime = 0 , this . startTime = this . game . time . time ) : ( this . onMarkerComplete . dispatch ( this . currentMarker , this ) , this . play ( this . currentMarker , 0 , this . volume , ! 0 , ! 0 ) ) ) : "" !== this . currentMarker && this . stop ( ) : this . loop ? ( this . onLoop . dispatch ( this ) , this . play ( this . currentMarker , 0 , this . volume , ! 0 , ! 0 ) ) : this . stop ( ) ) ) } , loopFull : function ( a ) { this . play ( null , 0 , a , ! 0 ) } , play : function ( a , b , c , d , e ) { if ( ( "undefined" == typeof a || a === ! 1 || null === a ) && ( a = "" ) , "undefined" == typeof e && ( e = ! 0 ) , this . isPlaying && ! this . allowMultiple && ! e && ! this . override ) return this ; if ( this . _sound && this . isPlaying && ! this . allowMultiple && ( this . override || e ) ) if ( this . usingWebAudio ) if ( "undefined" == typeof this . _sound . stop ) this . _sound . noteOff ( 0 ) ; else try { this . _sound . stop ( 0 ) } catch ( f ) { } else this . usingAudioTag && ( this . _sound . pause ( ) , this . _sound . currentTime = 0 ) ; if ( "" === a &&
if ( "number" == typeof a ) { var d = c . Color . getRGB ( a ) ; return b . r = d . r , b . g = d . g , b . b = d . b , b . a = d . a / 255 , b } return b } , componentToHex : function ( a ) { var b = a . toString ( 16 ) ; return 1 == b . length ? "0" + b : b } , HSVColorWheel : function ( a , b ) { "undefined" == typeof a && ( a = 1 ) , "undefined" == typeof b && ( b = 1 ) ; for ( var d = [ ] , e = 0 ; 359 >= e ; e ++ ) d . push ( c . Color . HSVtoRGB ( e / 359 , a , b ) ) ; return d } , HSLColorWheel : function ( a , b ) { "undefined" == typeof a && ( a = . 5 ) , "undefined" == typeof b && ( b = . 5 ) ; for ( var d = [ ] , e = 0 ; 359 >= e ; e ++ ) d . push ( c . Color . HSLtoRGB ( e / 359 , a , b ) ) ; return d } , interpolateColor : function ( a , b , d , e , f ) { "undefined" == typeof f && ( f = 255 ) ; var g = c . Color . getRGB ( a ) , h = c . Color . getRGB ( b ) , i = ( h . red - g . red ) * e / d + g . red , j = ( h . green - g . green ) * e / d + g . green , k = ( h . blue - g . blue ) * e / d + g . blue ; return c . Color . getColor32 ( f , i , j , k ) } , interpolateColorWithRGB : function ( a , b , d , e , f , g ) { var h = c . Color . getRGB ( a ) , i = ( b - h . red ) * g / f + h . red , j = ( d - h . green ) * g / f + h . green , k = ( e - h . blue ) * g / f + h . blue ; return c . Color . getColor ( i , j , k ) } , interpolateRGB : function ( a , b , d , e , f , g , h , i ) { var j = ( e - a ) * i / h + a , k = ( f - b ) * i / h + b , l = ( g - d ) * i / h + d ; return c . Color . getColor ( j , k , l ) } , getRandomColor : function ( a , b , d ) { if ( "undefined" == typeof a && ( a = 0 ) , "undefined" == typeof b && ( b = 255 ) , "undefined" == typeof d && ( d = 255 ) , b > 255 || a > b ) return c . Color . getColor ( 255 , 255 , 255 ) ; var e = a + Math . round ( Math . random ( ) * ( b - a ) ) , f = a + Math . round ( Math . random ( ) * ( b - a ) ) , g = a + Math . round ( Math . random ( ) * ( b - a ) ) ; return c . Color . getColor32 ( d , e , f , g ) } , getRGB : function ( a ) { return a > 16777215 ? { alpha : a >>> 24 , red : a >> 16 & 255 , green : a >> 8 & 255 , blue : 255 & a , a : a >>> 24 , r : a >> 16 & 255 , g : a >> 8 & 255 , b : 255 & a } : { alpha : 255 , red : a >> 16 & 255 , green : a >> 8 & 255 , blue : 255 & a , a : 255 , r : a >> 16 & 255 , g : a >> 8 & 255 , b : 255 & a } } , getWebRGB : function ( a ) { if ( "object" == typeof a ) return "rgba(" + a . r . toString ( ) + "," + a . g . toString ( ) + "," + a . b . toString ( ) + "," + ( a . a / 255 ) . toString ( ) + ")" ; var b = c . Color . getRGB ( a ) ; return "rgba(" + b . r . toString ( ) + "," + b . g . toString ( ) + "," + b . b . toString ( ) + "," + ( b . a / 255 ) . toString ( ) + ")" } , getAlpha : function ( a ) { return a >>> 24 } , getAlphaFloat : function ( a ) { return ( a >>> 24 ) / 255 } , getRed : function ( a ) { return a >> 16 & 255 } , getGreen : function ( a ) { return a >> 8 & 255 } , getBlue : function ( a ) { return 255 & a } , blendNormal : function ( a ) { return a } , blendLighten : function ( a , b ) { return b > a ? b : a } , blendDarken : function ( a , b ) { return b > a ? a : b } , blendMultiply : function ( a , b ) { return a * b / 255 } , blendAverage : function ( a , b ) { return ( a + b ) / 2 } , blendAdd : function ( a , b ) { return Math . min ( 255 , a + b ) } , blendSubtract : function ( a , b ) { return Math . max ( 0 , a + b - 255 ) } , blendDifference : function ( a , b ) { return Math . abs ( a - b ) } , blendNegation : function ( a , b ) { return 255 - Math . abs ( 255 - a - b ) } , blendScreen : function ( a , b ) { return 255 - ( ( 255 - a ) * ( 255 - b ) >> 8 ) } , blendExclusion : function ( a , b ) { return a + b - 2 * a * b / 255 } , blendOverlay : function ( a , b ) { return 128 > b ? 2 * a * b / 255 : 255 - 2 * ( 255 - a ) * ( 255 - b ) / 255 } , blendSoftLight : function ( a , b ) { return 128 > b ? 2 * ( ( a >> 1 ) + 64 ) * ( b / 255 ) : 255 - 2 * ( 255 - ( ( a >> 1 ) + 64 ) ) * ( 255 - b ) / 255 } , blendHardLight : function ( a , b ) { return c . Color . blendOverlay ( b , a ) } , blendColorDodge : function ( a , b ) { return 255 === b ? b : Math . min ( 255 , ( a << 8 ) / ( 255 - b ) ) } , blendColorBurn : function ( a , b ) { return 0 === b ? b : Math . max ( 0 , 255 - ( 255 - a << 8 ) / b ) } , blendLinearDodge : function ( a , b ) { return c . Color . blendAdd ( a , b ) } , blendLinearBurn : function ( a , b ) { return c . Color . blendSubtract ( a , b ) } , blendLinearLight : function ( a , b ) { return 128 > b ? c . Color . blendLinearBurn ( a , 2 * b ) : c . Color . blendLinearDodge ( a , 2 * ( b - 128 ) ) } , blendVividLight : function ( a , b ) { return 128 > b ? c . Color . blendColorBurn ( a , 2 * b ) : c . Color . blendColorDodge ( a , 2 * ( b - 128 ) ) } , blendPinLight : function ( a , b ) { return 128 > b ? c . Color . blendDarken ( a , 2 * b ) : c . Color . blendLighten ( a , 2 * ( b - 128 ) ) } , blendHardMix : function ( a , b ) { return c . Color . blendVividLight ( a , b ) < 128 ? 0 : 255 } , blendReflect : function ( a , b ) { return 255 === b ? b : Math . min ( 255 , a * a / ( 255 - b ) ) } , blendGlow : function ( a , b ) { return c . Color . blendReflect ( b , a ) } , blendPhoenix : function ( a , b ) { return Math . min ( a , b ) - Math . max ( a , b ) + 255 } } , c . LinkedList = function ( ) { this . next = null , this . prev = null , this . first = null , this . last = null , this . total = 0 } , c . LinkedList . prototype = { add : function ( a ) { return 0 === this . total && null === this . first && null === this . last ? ( this . first = a , this . last = a , this . next = a , a . prev = this , this . total ++ , a ) : ( this . last . next = a , a . prev = this . last , this . last = a , this . total ++ , a ) } , reset : function ( ) { this . first = null , this . last = null , this . next = null , this . prev = null , this . total = 0 } , remov
else { var b ; "undefined" != typeof window ? b = window : "undefined" != typeof global ? b = global : "undefined" != typeof self && ( b = self ) , b . p2 = a ( ) } } ( function ( ) { return function a ( b , c , d ) { function e ( g , h ) { if ( ! c [ g ] ) { if ( ! b [ g ] ) { var i = "function" == typeof require && require ; if ( ! h && i ) return i ( g , ! 0 ) ; if ( f ) return f ( g , ! 0 ) ; throw new Error ( "Cannot find module '" + g + "'" ) } var j = c [ g ] = { exports : { } } ; b [ g ] [ 0 ] . call ( j . exports , function ( a ) { var c = b [ g ] [ 1 ] [ a ] ; return e ( c ? c : a ) } , j , j . exports , a , b , c , d ) } return c [ g ] . exports } for ( var f = "function" == typeof require && require , g = 0 ; g < d . length ; g ++ ) e ( d [ g ] ) ; return e } ( { 1 : [ function ( a , b , c ) { ( function ( b , d , e ) { function e ( a , b , c ) { if ( ! ( this instanceof e ) ) return new e ( a , b , c ) ; var d = typeof a ; if ( "base64" === b && "string" === d ) for ( a = D ( a ) ; a . length % 4 !== 0 ; ) a += "=" ; var f ; if ( "number" === d ) f = F ( a ) ; else if ( "string" === d ) f = e . byteLength ( a , b ) ; else { if ( "object" !== d ) throw new Error ( "First argument needs to be a number, array or string." ) ; f = F ( a . length ) } var g ; e . _useTypedArrays ? g = e . _augment ( new Uint8Array ( f ) ) : ( g = this , g . length = f , g . _isBuffer = ! 0 ) ; var h ; if ( e . _useTypedArrays && "number" == typeof a . byteLength ) g . _set ( a ) ; else if ( H ( a ) ) for ( h = 0 ; f > h ; h ++ ) g [ h ] = e . isBuffer ( a ) ? a . readUInt8 ( h ) : a [ h ] ; else if ( "string" === d ) g . write ( a , 0 , b ) ; else if ( "number" === d && ! e . _useTypedArrays && ! c ) for ( h = 0 ; f > h ; h ++ ) g [ h ] = 0 ; return g } function f ( a , b , c , d ) { c = Number ( c ) || 0 ; var f = a . length - c ; d ? ( d = Number ( d ) , d > f && ( d = f ) ) : d = f ; var g = b . length ; S ( g % 2 === 0 , "Invalid hex string" ) , d > g / 2 && ( d = g / 2 ) ; for ( var h = 0 ; d > h ; h ++ ) { var i = parseInt ( b . substr ( 2 * h , 2 ) , 16 ) ; S ( ! isNaN ( i ) , "Invalid hex string" ) , a [ c + h ] = i } return e . _charsWritten = 2 * h , h } function g ( a , b , c , d ) { var f = e . _charsWritten = N ( J ( b ) , a , c , d ) ; return f } function h ( a , b , c , d ) { var f = e . _charsWritten = N ( K ( b ) , a , c , d ) ; return f } function i ( a , b , c , d ) { return h ( a , b , c , d ) } function j ( a , b , c , d ) { var f = e . _charsWritten = N ( M ( b ) , a , c , d ) ; return f } function k ( a , b , c , d ) { var f = e . _charsWritten = N ( L ( b ) , a , c , d ) ; return f } function l ( a , b , c ) { return T . fromByteArray ( 0 === b && c === a . length ? a : a . slice ( b , c ) ) } function m ( a , b , c ) { var d = "" , e = "" ; c = Math . min ( a . length , c ) ; for ( var f = b ; c > f ; f ++ ) a [ f ] <= 127 ? ( d += O ( e ) + String . fromCharCode ( a [ f ] ) , e = "" ) : e += "%" + a [ f ] . toString ( 16 ) ; return d + O ( e ) } function n ( a , b , c ) { var d = "" ; c = Math . min ( a . length , c ) ; for ( var e = b ; c > e ; e ++ ) d += String . fromCharCode ( a [ e ] ) ; return d } function o ( a , b , c ) { return n ( a , b , c ) } function p ( a , b , c ) { var d = a . length ; ( ! b || 0 > b ) && ( b = 0 ) , ( ! c || 0 > c || c > d ) && ( c = d ) ; for ( var e = "" , f = b ; c > f ; f ++ ) e += I ( a [ f ] ) ; return e } function q ( a , b , c ) { for ( var d = a . slice ( b , c ) , e = "" , f = 0 ; f < d . length ; f += 2 ) e += String . fromCharCode ( d [ f ] + 256 * d [ f + 1 ] ) ; return e } function r ( a , b , c , d ) { d || ( S ( "boolean" == typeof c , "missing or invalid endian" ) , S ( void 0 !== b && null !== b , "missing offset" ) , S ( b + 1 < a . length , "Trying to read beyond buffer length" ) ) ; var e = a . length ; if ( ! ( b >= e ) ) { var f ; return c ? ( f = a [ b ] , e > b + 1 && ( f |= a [ b + 1 ] << 8 ) ) : ( f = a [ b ] << 8 , e > b + 1 && ( f |= a [ b + 1 ] ) ) , f } } function s ( a , b , c , d ) { d || ( S ( "boolean" == typeof c , "missing or invalid endian" ) , S ( void 0 !== b && null !== b , "missing offset" ) , S ( b + 3 < a . length , "Trying to read beyond buffer length" ) ) ; var e = a . length ; if ( ! ( b >= e ) ) { var f ; return c ? ( e > b + 2 && ( f = a [ b + 2 ] << 16 ) , e > b + 1 && ( f |= a [ b + 1 ] << 8 ) , f |= a [ b ] , e > b + 3 && ( f += a [ b + 3 ] << 24 >>> 0 ) ) : ( e > b + 1 && ( f = a [ b + 1 ] << 16 ) , e > b + 2 && ( f |= a [ b + 2 ] << 8 ) , e > b + 3 && ( f |= a [ b + 3 ] ) , f += a [ b ] << 24 >>> 0 ) , f } } function t ( a , b , c , d ) { d || ( S ( "boolean" == typeof c , "missing or invalid endian" ) , S ( void 0 !== b && null !== b , "missing offset" ) , S ( b + 1 < a . length , "Trying to read beyond buffer length" ) ) ; var e = a . length ; if ( ! ( b >= e ) ) { var f = r ( a , b , c , ! 0 ) , g = 32768 & f ; return g ? - 1 * ( 65535 - f + 1 ) : f } } function u ( a , b , c , d ) { d || ( S ( "boolean" == typeof c , "missing or invalid endian" ) , S ( void 0 !== b && null !== b , "missing offset" ) , S ( b + 3 < a . length , "Trying to read beyond buffer length" ) ) ; var e = a . length ; if ( ! ( b >= e ) ) { var f = s ( a , b , c , ! 0 ) , g = 2147483648 & f ; return g ? - 1 * ( 4294967295 - f + 1 ) : f } } function v ( a , b , c , d ) { return d || ( S ( "boolean" == typeof c , "missing or invalid endian" ) , S ( b + 3 < a . length , "Trying to read beyond buffer length" ) ) , U . read ( a , b , c , 23 , 4 ) } function w ( a , b , c , d ) { return d || ( S ( "boolean" == typeof c , "missing or invalid endian" ) , S ( b + 7 < a . length , "Trying to read beyond buffer length" ) ) , U . read ( a , b , c , 52 , 8 ) } function x ( a , b , c , d , e ) { e || ( S ( void 0 !== b && null !== b , "missing value" ) , S ( "boolean" == typeof d , "missing or invalid endian" ) , S ( void 0 !== c && null !== c , "missing offset" ) , S ( c + 1 < a . length , " tryi
for ( var o = f / ( j - h ) , p = g / ( k - i ) , n = 0 ; n !== e ; n ++ ) for ( var q = c [ n ] , r = q . aabb , s = Math . max ( r . lowerBound [ 0 ] , h ) , t = Math . max ( r . lowerBound [ 1 ] , i ) , u = Math . min ( r . upperBound [ 0 ] , j ) , v = Math . min ( r . upperBound [ 1 ] , k ) , w = Math . floor ( o * ( s - h ) ) , x = Math . floor ( p * ( t - i ) ) , y = Math . floor ( o * ( u - h ) ) , z = Math . floor ( p * ( v - i ) ) , A = w ; y >= A ; A ++ ) for ( var B = x ; z >= B ; B ++ ) { var C = A , D = B , E = C * ( g - 1 ) + D ; E >= 0 && m > E && l [ E ] . push ( q ) } for ( var n = 0 ; n !== m ; n ++ ) for ( var F = l [ n ] , A = 0 , G = F . length ; A !== G ; A ++ ) for ( var q = F [ A ] , B = 0 ; B !== A ; B ++ ) { var H = F [ B ] ; d . canCollide ( q , H ) && this . boundingVolumeCheck ( q , H ) && b . push ( q , H ) } return b } } ) . call ( this , a ( "Zbi7gb" ) , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } , a ( "buffer" ) . Buffer , arguments [ 3 ] , arguments [ 4 ] , arguments [ 5 ] , arguments [ 6 ] , "/collision\\GridBroadphase.js" , "/collision" ) } , { "../collision/Broadphase" : 12 , "../math/vec2" : 35 , "../shapes/Circle" : 42 , "../shapes/Particle" : 46 , "../shapes/Plane" : 47 , "../utils/Utils" : 54 , Zbi7gb : 4 , buffer : 1 } ] , 14 : [ function ( a , b ) { ( function ( ) { function c ( ) { d . call ( this , d . NAIVE ) } { var d = ( a ( "../shapes/Circle" ) , a ( "../shapes/Plane" ) , a ( "../shapes/Shape" ) , a ( "../shapes/Particle" ) , a ( "../collision/Broadphase" ) ) ; a ( "../math/vec2" ) } b . exports = c , c . prototype = new d , c . prototype . constructor = c , c . prototype . getCollisionPairs = function ( a ) { var b = a . bodies , c = this . result ; c . length = 0 ; for ( var e = 0 , f = b . length ; e !== f ; e ++ ) for ( var g = b [ e ] , h = 0 ; e > h ; h ++ ) { var i = b [ h ] ; d . canCollide ( g , i ) && this . boundingVolumeCheck ( g , i ) && c . push ( g , i ) } return c } , c . prototype . aabbQuery = function ( a , b , c ) { c = c || [ ] ; for ( var d = a . bodies , e = 0 ; e < d . length ; e ++ ) { var f = d [ e ] ; f . aabbNeedsUpdate && f . updateAABB ( ) , f . aabb . overlaps ( b ) && c . push ( f ) } return c } } ) . call ( this , a ( "Zbi7gb" ) , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } , a ( "buffer" ) . Buffer , arguments [ 3 ] , arguments [ 4 ] , arguments [ 5 ] , arguments [ 6 ] , "/collision\\NaiveBroadphase.js" , "/collision" ) } , { "../collision/Broadphase" : 12 , "../math/vec2" : 35 , "../shapes/Circle" : 42 , "../shapes/Particle" : 46 , "../shapes/Plane" : 47 , "../shapes/Shape" : 49 , Zbi7gb : 4 , buffer : 1 } ] , 15 : [ function ( a , b ) { ( function ( ) { function c ( ) { this . contactEquations = [ ] , this . frictionEquations = [ ] , this . enableFriction = ! 0 , this . enabledEquations = ! 0 , this . slipForce = 10 , this . frictionCoefficient = . 3 , this . surfaceVelocity = 0 , this . reuseObjects = ! 0 , this . reusableContactEquations = [ ] , this . reusableFrictionEquations = [ ] , this . restitution = 0 , this . stiffness = l . DEFAULT _STIFFNESS , this . relaxation = l . DEFAULT _RELAXATION , this . frictionStiffness = l . DEFAULT _STIFFNESS , this . frictionRelaxation = l . DEFAULT _RELAXATION , this . enableFrictionReduction = ! 0 , this . collidingBodiesLastStep = new k , this . contactSkinSize = . 01 } function d ( a , b ) { f . set ( a . vertices [ 0 ] , . 5 * - b . length , - b . radius ) , f . set ( a . vertices [ 1 ] , . 5 * b . length , - b . radius ) , f . set ( a . vertices [ 2 ] , . 5 * b . length , b . radius ) , f . set ( a . vertices [ 3 ] , . 5 * - b . length , b . radius ) } function e ( a , b , c , d ) { for ( var e = T , i = U , j = V , k = W , l = a , m = b . vertices , n = null , o = 0 ; o !== m . length + 1 ; o ++ ) { var p = m [ o % m . length ] , q = m [ ( o + 1 ) % m . length ] ; f . rotate ( e , p , d ) , f . rotate ( i , q , d ) , h ( e , e , c ) , h ( i , i , c ) , g ( j , e , l ) , g ( k , i , l ) ; var r = f . crossLength ( j , k ) ; if ( null === n && ( n = r ) , 0 >= r * n ) return ! 1 ; n = r } return ! 0 } var f = a ( "../math/vec2" ) , g = f . sub , h = f . add , i = f . dot , j = a ( "../utils/Utils" ) , k = a ( "../utils/TupleDictionary" ) , l = a ( "../equations/Equation" ) , m = a ( "../equations/ContactEquation" ) , n = a ( "../equations/FrictionEquation" ) , o = a ( "../shapes/Circle" ) , p = a ( "../shapes/Convex" ) , q = a ( "../shapes/Shape" ) , r = ( a ( "../objects/Body" ) , a ( "../shapes/Rectangle" ) ) ; b . exports = c ; var s = f . fromValues ( 0 , 1 ) , t = f . fromValues ( 0 , 0 ) , u = f . fromValues ( 0 , 0 ) , v = f . fromValues ( 0 , 0 ) , w = f . fromValues ( 0 , 0 ) , x = f . fromValues ( 0 , 0 ) , y = f . fromValues ( 0 , 0 ) , z = f . fromValues ( 0 , 0 ) , A = f . fromValues ( 0 , 0 ) , B = f . fromValues ( 0 , 0 ) , C = f . fromValues ( 0 , 0 ) , D = f . fromValues ( 0 , 0 ) , E = f . fromValues ( 0 , 0 ) , F = f . fromValues ( 0 , 0 ) , G = f . fromValues ( 0 , 0 ) , H = f . fromValues ( 0 , 0 ) , I = f . fromValues ( 0 , 0 ) , J = f . fromValues ( 0 , 0 ) , K = f . fromValues ( 0 , 0 ) , L = [ ] , M = f . create ( ) , N = f . create ( ) ; c . prototype . bodiesOverlap = function ( a , b ) { for ( var c = M , d = N , e = 0 , f = a . shapes . length ; e !== f ; e ++ ) { { var g = a . shapes [ e ] , h = a . shapeOffsets [ e ] ; a . shapeAngles [ e ] } a . toWorldFrame ( c , h ) ; for ( var i = 0 , j = b . shapes . length ; i !== j ; i ++ ) { { var k = b . shapes [ i ] , l = b . shapeOffsets [ i ] ; b . shapeAngles [ i ] } if ( b . toWorldFrame ( d , l ) , this [ g . type | k . type ] ( a , g , c , g . angle + a . angle , b , k , d , k . angle + b . angle , ! 0 ) ) return ! 0 } } return ! 1 } , c . prototype . colli
1 === d && ( e = "y" ) , 2 === d && ( e = "z" ) ; for ( var f = this . axisList , g = ( b . lowerBound [ e ] , b . upperBound [ e ] , 0 ) ; g < f . length ; g ++ ) { var h = f [ g ] ; h . aabbNeedsUpdate && h . updateAABB ( ) , h . aabb . overlaps ( b ) && c . push ( h ) } return c } } ) . call ( this , a ( "Zbi7gb" ) , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } , a ( "buffer" ) . Buffer , arguments [ 3 ] , arguments [ 4 ] , arguments [ 5 ] , arguments [ 6 ] , "/collision\\SAPBroadphase.js" , "/collision" ) } , { "../collision/Broadphase" : 12 , "../utils/Utils" : 54 , Zbi7gb : 4 , buffer : 1 } ] , 19 : [ function ( a , b ) { ( function ( ) { function c ( a , b , c , e ) { this . type = c , e = d . defaults ( e , { collideConnected : ! 0 , wakeUpBodies : ! 0 } ) , this . equations = [ ] , this . bodyA = a , this . bodyB = b , this . collideConnected = e . collideConnected , e . wakeUpBodies && ( a && a . wakeUp ( ) , b && b . wakeUp ( ) ) } b . exports = c ; var d = a ( "../utils/Utils" ) ; c . prototype . update = function ( ) { throw new Error ( "method update() not implmemented in this Constraint subclass!" ) } , c . DISTANCE = 1 , c . GEAR = 2 , c . LOCK = 3 , c . PRISMATIC = 4 , c . REVOLUTE = 5 , c . prototype . setStiffness = function ( a ) { for ( var b = this . equations , c = 0 ; c !== b . length ; c ++ ) { var d = b [ c ] ; d . stiffness = a , d . needsUpdate = ! 0 } } , c . prototype . setRelaxation = function ( a ) { for ( var b = this . equations , c = 0 ; c !== b . length ; c ++ ) { var d = b [ c ] ; d . relaxation = a , d . needsUpdate = ! 0 } } } ) . call ( this , a ( "Zbi7gb" ) , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } , a ( "buffer" ) . Buffer , arguments [ 3 ] , arguments [ 4 ] , arguments [ 5 ] , arguments [ 6 ] , "/constraints\\Constraint.js" , "/constraints" ) } , { "../utils/Utils" : 54 , Zbi7gb : 4 , buffer : 1 } ] , 20 : [ function ( a , b ) { ( function ( ) { function c ( a , b , c ) { c = g . defaults ( c , { localAnchorA : [ 0 , 0 ] , localAnchorB : [ 0 , 0 ] } ) , d . call ( this , a , b , d . DISTANCE , c ) , this . localAnchorA = f . fromValues ( c . localAnchorA [ 0 ] , c . localAnchorA [ 1 ] ) , this . localAnchorB = f . fromValues ( c . localAnchorB [ 0 ] , c . localAnchorB [ 1 ] ) ; var h = this . localAnchorA , i = this . localAnchorB ; if ( this . distance = 0 , "number" == typeof c . distance ) this . distance = c . distance ; else { var j = f . create ( ) , k = f . create ( ) , l = f . create ( ) ; f . rotate ( j , h , a . angle ) , f . rotate ( k , i , b . angle ) , f . add ( l , b . position , k ) , f . sub ( l , l , j ) , f . sub ( l , l , a . position ) , this . distance = f . length ( l ) } var m ; m = "undefined" == typeof c . maxForce ? Number . MAX _VALUE : c . maxForce ; var n = new e ( a , b , - m , m ) ; this . equations = [ n ] , this . maxForce = m ; var l = f . create ( ) , o = f . create ( ) , p = f . create ( ) , q = this ; n . computeGq = function ( ) { var a = this . bodyA , b = this . bodyB , c = a . position , d = b . position ; return f . rotate ( o , h , a . angle ) , f . rotate ( p , i , b . angle ) , f . add ( l , d , p ) , f . sub ( l , l , o ) , f . sub ( l , l , c ) , f . length ( l ) - q . distance } , this . setMaxForce ( m ) , this . upperLimitEnabled = ! 1 , this . upperLimit = 1 , this . lowerLimitEnabled = ! 1 , this . lowerLimit = 0 , this . position = 0 } var d = a ( "./Constraint" ) , e = a ( "../equations/Equation" ) , f = a ( "../math/vec2" ) , g = a ( "../utils/Utils" ) ; b . exports = c , c . prototype = new d , c . prototype . constructor = c ; var h = f . create ( ) , i = f . create ( ) , j = f . create ( ) ; c . prototype . update = function ( ) { var a = this . equations [ 0 ] , b = this . bodyA , c = this . bodyB , d = ( this . distance , b . position ) , e = c . position , g = this . equations [ 0 ] , k = a . G ; f . rotate ( i , this . localAnchorA , b . angle ) , f . rotate ( j , this . localAnchorB , c . angle ) , f . add ( h , e , j ) , f . sub ( h , h , i ) , f . sub ( h , h , d ) , this . position = f . length ( h ) ; var l = ! 1 ; if ( this . upperLimitEnabled && this . position > this . upperLimit && ( g . maxForce = 0 , g . minForce = - this . maxForce , this . distance = this . upperLimit , l = ! 0 ) , this . lowerLimitEnabled && this . position < this . lowerLimit && ( g . maxForce = this . maxForce , g . minForce = 0 , this . distance = this . lowerLimit , l = ! 0 ) , ( this . lowerLimitEnabled || this . upperLimitEnabled ) && ! l ) return void ( g . enabled = ! 1 ) ; g . enabled = ! 0 , f . normalize ( h , h ) ; var m = f . crossLength ( i , h ) , n = f . crossLength ( j , h ) ; k [ 0 ] = - h [ 0 ] , k [ 1 ] = - h [ 1 ] , k [ 2 ] = - m , k [ 3 ] = h [ 0 ] , k [ 4 ] = h [ 1 ] , k [ 5 ] = n } , c . prototype . setMaxForce = function ( a ) { var b = this . equations [ 0 ] ; b . minForce = - a , b . maxForce = a } , c . prototype . getMaxForce = function ( ) { var a = this . equations [ 0 ] ; return a . maxForce } } ) . call ( this , a ( "Zbi7gb" ) , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } , a ( "buffer" ) . Buffer , arguments [ 3 ] , arguments [ 4 ] , arguments [ 5 ] , arguments [ 6 ] , "/constraints\\DistanceConstraint.js" , "/constraints" ) } , { "../equations/Equation" : 27 , "../math/vec2" : 35 , "../utils/Utils" : 54 , "./Constraint" : 19 , Zbi7gb : 4 , buffer : 1 } ] , 21 : [ function ( a , b ) { ( function ( ) { function c ( a , b , c ) { c = c || { } , d . call ( this , a , b , d . GEAR , c ) , this . ratio = "number" == typeof c . ratio ? c . ratio : 1 , this . angle = "number" == type
var g = new e . Polygon ; if ( g . vertices = a , g . makeCCW ( ) , "number" == typeof b . removeCollinearPoints && g . removeCollinearPoints ( b . removeCollinearPoints ) , "undefined" == typeof b . skipSimpleCheck && ! g . isSimple ( ) ) return ! 1 ; this . concavePath = g . vertices . slice ( 0 ) ; for ( var c = 0 ; c < this . concavePath . length ; c ++ ) { var h = [ 0 , 0 ] ; d . copy ( h , this . concavePath [ c ] ) , this . concavePath [ c ] = h } var i ; i = b . optimalDecomp ? g . decomp ( ) : g . quickDecomp ( ) ; for ( var j = d . create ( ) , c = 0 ; c !== i . length ; c ++ ) { for ( var k = new f ( i [ c ] . vertices ) , l = 0 ; l !== k . vertices . length ; l ++ ) { var h = k . vertices [ l ] ; d . sub ( h , h , k . centerOfMass ) } d . scale ( j , k . centerOfMass , 1 ) , k . updateTriangles ( ) , k . updateCenterOfMass ( ) , k . updateBoundingRadius ( ) , this . addShape ( k , j ) } return this . adjustCenterOfMass ( ) , this . aabbNeedsUpdate = ! 0 , ! 0 } ; var l = ( d . fromValues ( 0 , 0 ) , d . fromValues ( 0 , 0 ) ) , m = d . fromValues ( 0 , 0 ) , n = d . fromValues ( 0 , 0 ) ; c . prototype . adjustCenterOfMass = function ( ) { var a = l , b = m , c = n , e = 0 ; d . set ( b , 0 , 0 ) ; for ( var f = 0 ; f !== this . shapes . length ; f ++ ) { var g = this . shapes [ f ] , h = this . shapeOffsets [ f ] ; d . scale ( a , h , g . area ) , d . add ( b , b , a ) , e += g . area } d . scale ( c , b , 1 / e ) ; for ( var f = 0 ; f !== this . shapes . length ; f ++ ) { var g = this . shapes [ f ] , h = this . shapeOffsets [ f ] ; h || ( h = this . shapeOffsets [ f ] = d . create ( ) ) , d . sub ( h , h , c ) } d . add ( this . position , this . position , c ) ; for ( var f = 0 ; this . concavePath && f < this . concavePath . length ; f ++ ) d . sub ( this . concavePath [ f ] , this . concavePath [ f ] , c ) ; this . updateMassProperties ( ) , this . updateBoundingRadius ( ) } , c . prototype . setZeroForce = function ( ) { d . set ( this . force , 0 , 0 ) , this . angularForce = 0 } , c . prototype . resetConstraintVelocity = function ( ) { var a = this , b = a . vlambda ; d . set ( b , 0 , 0 ) , a . wlambda = 0 } , c . prototype . addConstraintVelocity = function ( ) { var a = this , b = a . velocity ; d . add ( b , b , a . vlambda ) , a . angularVelocity += a . wlambda } , c . prototype . applyDamping = function ( a ) { if ( this . type === c . DYNAMIC ) { var b = this . velocity ; d . scale ( b , b , Math . pow ( 1 - this . damping , a ) ) , this . angularVelocity *= Math . pow ( 1 - this . angularDamping , a ) } } , c . prototype . wakeUp = function ( ) { var a = this . sleepState ; this . sleepState = c . AWAKE , this . idleTime = 0 , a !== c . AWAKE && this . emit ( c . wakeUpEvent ) } , c . prototype . sleep = function ( ) { this . sleepState = c . SLEEPING , this . angularVelocity = 0 , this . angularForce = 0 , d . set ( this . velocity , 0 , 0 ) , d . set ( this . force , 0 , 0 ) , this . emit ( c . sleepEvent ) } , c . prototype . sleepTick = function ( a , b , e ) { if ( this . allowSleep && this . type !== c . SLEEPING ) { this . wantsToSleep = ! 1 ; var f = ( this . sleepState , d . squaredLength ( this . velocity ) + Math . pow ( this . angularVelocity , 2 ) ) , g = Math . pow ( this . sleepSpeedLimit , 2 ) ; f >= g ? ( this . idleTime = 0 , this . sleepState = c . AWAKE ) : ( this . idleTime += e , this . sleepState = c . SLEEPY ) , this . idleTime > this . sleepTimeLimit && ( b ? this . wantsToSleep = ! 0 : this . sleep ( ) ) } } , c . prototype . getVelocityFromPosition = function ( a , b ) { return a = a || d . create ( ) , d . sub ( a , this . position , this . previousPosition ) , d . scale ( a , a , 1 / b ) , a } , c . prototype . getAngularVelocityFromPosition = function ( a ) { return ( this . angle - this . previousAngle ) / a } , c . prototype . overlaps = function ( a ) { return this . world . overlapKeeper . bodiesAreOverlapping ( this , a ) } ; var o = d . create ( ) , p = d . create ( ) ; c . prototype . integrate = function ( a ) { var b = this . invMass , c = this . force , e = this . position , f = this . velocity ; d . copy ( this . previousPosition , this . position ) , this . previousAngle = this . angle , this . fixedRotation || ( this . angularVelocity += this . angularForce * this . invInertia * a ) , d . scale ( o , c , a * b ) , d . add ( f , o , f ) , this . integrateToTimeOfImpact ( a ) || ( d . scale ( p , f , a ) , d . add ( e , e , p ) , this . fixedRotation || ( this . angle += this . angularVelocity * a ) ) , this . aabbNeedsUpdate = ! 0 } ; var q = d . create ( ) , r = d . create ( ) , s = d . create ( ) , t = d . create ( ) ; c . prototype . integrateToTimeOfImpact = function ( a ) { if ( this . ccdSpeedThreshold < 0 || d . squaredLength ( this . velocity ) < Math . pow ( this . ccdSpeedThreshold , 2 ) ) return ! 1 ; d . normalize ( q , this . velocity ) , d . scale ( r , this . velocity , a ) , d . add ( r , r , this . position ) , d . sub ( s , r , this . position ) ; var b , c = this . angularVelocity * a , e = d . length ( s ) , f = 1 , g = this ; if ( this . world . raycastAll ( this . position , r , { } , function ( a ) { a . body !== g && ( b = a . body , d . copy ( r , a . hitPointWorld ) , d . sub ( s , a . hitPointWorld , g . position ) , f = d . length ( s ) / e , a . abort ( ) ) } ) , ! b ) return ! 1 ; var h = this . angle ; d . copy ( t , this . position ) ; for ( var i = 0 , j = 0 , k = 0 , l = f ; l >= j && i < this . ccdIterations ; ) { i ++ , k = ( l - j ) / 2 , d . scale ( p , s , f ) , d . add ( this . position , t , p ) , this . angle = h + c * f , this . updateAABB ( ) ; var m = this . aabb . overlaps ( b . aabb ) && this . w
} for ( var q ; q = c . getUnvisitedNode ( f ) ; ) { var p = this . _islandPool . length ? this . _islandPool . pop ( ) : new d ; this . bfs ( q , p . bodies , p . equations ) , o . push ( p ) } return o } } ) . call ( this , a ( "Zbi7gb" ) , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } , a ( "buffer" ) . Buffer , arguments [ 3 ] , arguments [ 4 ] , arguments [ 5 ] , arguments [ 6 ] , "/world\\IslandManager.js" , "/world" ) } , { "../math/vec2" : 35 , "../objects/Body" : 36 , "./Island" : 55 , "./IslandNode" : 57 , Zbi7gb : 4 , buffer : 1 } ] , 57 : [ function ( a , b ) { ( function ( ) { function a ( a ) { this . body = a , this . neighbors = [ ] , this . equations = [ ] , this . visited = ! 1 } b . exports = a , a . prototype . reset = function ( ) { this . equations . length = 0 , this . neighbors . length = 0 , this . visited = ! 1 , this . body = null } } ) . call ( this , a ( "Zbi7gb" ) , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } , a ( "buffer" ) . Buffer , arguments [ 3 ] , arguments [ 4 ] , arguments [ 5 ] , arguments [ 6 ] , "/world\\IslandNode.js" , "/world" ) } , { Zbi7gb : 4 , buffer : 1 } ] , 58 : [ function ( a , b ) { ( function ( ) { function c ( a ) { l . apply ( this ) , a = a || { } , this . springs = [ ] , this . bodies = [ ] , this . disabledBodyCollisionPairs = [ ] , this . solver = a . solver || new d , this . narrowphase = new q ( this ) , this . islandManager = new t , this . gravity = f . fromValues ( 0 , - 9.78 ) , a . gravity && f . copy ( this . gravity , a . gravity ) , this . frictionGravity = f . length ( this . gravity ) || 10 , this . useWorldGravityAsFrictionGravity = ! 0 , this . useFrictionGravityOnZeroGravity = ! 0 , this . doProfiling = a . doProfiling || ! 1 , this . lastStepTime = 0 , this . broadphase = a . broadphase || new p , this . broadphase . setWorld ( this ) , this . constraints = [ ] , this . defaultMaterial = new n , this . defaultContactMaterial = new o ( this . defaultMaterial , this . defaultMaterial ) , this . lastTimeStep = 1 / 60 , this . applySpringForces = ! 0 , this . applyDamping = ! 0 , this . applyGravity = ! 0 , this . solveConstraints = ! 0 , this . contactMaterials = [ ] , this . time = 0 , this . stepping = ! 1 , this . bodiesToBeRemoved = [ ] , this . fixedStepTime = 0 , this . islandSplit = "undefined" != typeof a . islandSplit ? ! ! a . islandSplit : ! 1 , this . emitImpactEvent = ! 0 , this . _constraintIdCounter = 0 , this . _bodyIdCounter = 0 , this . postStepEvent = { type : "postStep" } , this . addBodyEvent = { type : "addBody" , body : null } , this . removeBodyEvent = { type : "removeBody" , body : null } , this . addSpringEvent = { type : "addSpring" , spring : null } , this . impactEvent = { type : "impact" , bodyA : null , bodyB : null , shapeA : null , shapeB : null , contactEquation : null } , this . postBroadphaseEvent = { type : "postBroadphase" , pairs : null } , this . sleepMode = c . NO _SLEEPING , this . beginContactEvent = { type : "beginContact" , shapeA : null , shapeB : null , bodyA : null , bodyB : null , contactEquations : [ ] } , this . endContactEvent = { type : "endContact" , shapeA : null , shapeB : null , bodyA : null , bodyB : null } , this . preSolveEvent = { type : "preSolve" , contactEquations : null , frictionEquations : null } , this . overlappingShapesLastState = { keys : [ ] } , this . overlappingShapesCurrentState = { keys : [ ] } , this . overlapKeeper = new s } { var d = a ( "../solver/GSSolver" ) , e = ( a ( "../solver/Solver" ) , a ( "../collision/NaiveBroadphase" ) , a ( "../collision/Ray" ) ) , f = a ( "../math/vec2" ) , g = a ( "../shapes/Circle" ) , h = ( a ( "../shapes/Rectangle" ) , a ( "../shapes/Convex" ) ) , i = ( a ( "../shapes/Line" ) , a ( "../shapes/Plane" ) ) , j = a ( "../shapes/Capsule" ) , k = a ( "../shapes/Particle" ) , l = a ( "../events/EventEmitter" ) , m = a ( "../objects/Body" ) , n = ( a ( "../shapes/Shape" ) , a ( "../objects/LinearSpring" ) , a ( "../material/Material" ) ) , o = a ( "../material/ContactMaterial" ) , p = ( a ( "../constraints/DistanceConstraint" ) , a ( "../constraints/Constraint" ) , a ( "../constraints/LockConstraint" ) , a ( "../constraints/RevoluteConstraint" ) , a ( "../constraints/PrismaticConstraint" ) , a ( "../constraints/GearConstraint" ) , a ( "../../package.json" ) , a ( "../collision/Broadphase" ) , a ( "../collision/SAPBroadphase" ) ) , q = a ( "../collision/Narrowphase" ) , r = a ( "../utils/Utils" ) , s = a ( "../utils/OverlapKeeper" ) , t = a ( "./IslandManager" ) ; a ( "../objects/RotationalSpring" ) } if ( b . exports = c , "undefined" == typeof performance && ( performance = { } ) , ! performance . now ) { var u = Date . now ( ) ; performance . timing && performance . timing . navigationStart && ( u = performance . timing . navigationStart ) , performance . now = function ( ) { return Date . now ( ) - u } } c . prototype = new Object ( l . prototype ) , c . prototype . constructor = c , c . NO _SLEEPING = 1 , c . BODY _SLEEPING = 2 , c . ISLAND _SLEEPING = 4 , c . prototype . addConstraint = function ( a ) { this . constraints . push ( a ) } , c . prototype . addContactMaterial = function ( a ) { this . contactMaterials . push ( a )
} , set : function ( a ) { this . world . solveConstraints = a } } ) , Object . defineProperty ( c . Physics . P2 . prototype , "time" , { get : function ( ) { return this . world . time } } ) , Object . defineProperty ( c . Physics . P2 . prototype , "emitImpactEvent" , { get : function ( ) { return this . world . emitImpactEvent } , set : function ( a ) { this . world . emitImpactEvent = a } } ) , Object . defineProperty ( c . Physics . P2 . prototype , "sleepMode" , { get : function ( ) { return this . world . sleepMode } , set : function ( a ) { this . world . sleepMode = a } } ) , Object . defineProperty ( c . Physics . P2 . prototype , "total" , { get : function ( ) { return this . world . bodies . length } } ) , c . Physics . P2 . FixtureList = function ( a ) { Array . isArray ( a ) || ( a = [ a ] ) , this . rawList = a , this . init ( ) , this . parse ( this . rawList ) } , c . Physics . P2 . FixtureList . prototype = { init : function ( ) { this . namedFixtures = { } , this . groupedFixtures = [ ] , this . allFixtures = [ ] } , setCategory : function ( a , b ) { var c = function ( b ) { b . collisionGroup = a } ; this . getFixtures ( b ) . forEach ( c ) } , setMask : function ( a , b ) { var c = function ( b ) { b . collisionMask = a } ; this . getFixtures ( b ) . forEach ( c ) } , setSensor : function ( a , b ) { var c = function ( b ) { b . sensor = a } ; this . getFixtures ( b ) . forEach ( c ) } , setMaterial : function ( a , b ) { var c = function ( b ) { b . material = a } ; this . getFixtures ( b ) . forEach ( c ) } , getFixtures : function ( a ) { var b = [ ] ; if ( a ) { a instanceof Array || ( a = [ a ] ) ; var c = this ; return a . forEach ( function ( a ) { c . namedFixtures [ a ] && b . push ( c . namedFixtures [ a ] ) } ) , this . flatten ( b ) } return this . allFixtures } , getFixtureByKey : function ( a ) { return this . namedFixtures [ a ] } , getGroup : function ( a ) { return this . groupedFixtures [ a ] } , parse : function ( ) { var a , b , c , d ; c = this . rawList , d = [ ] ; for ( a in c ) b = c [ a ] , isNaN ( a - 0 ) ? this . namedFixtures [ a ] = this . flatten ( b ) : ( this . groupedFixtures [ a ] = this . groupedFixtures [ a ] || [ ] , this . groupedFixtures [ a ] = this . groupedFixtures [ a ] . concat ( b ) ) , d . push ( this . allFixtures = this . flatten ( this . groupedFixtures ) ) } , flatten : function ( a ) { var b , c ; return b = [ ] , c = arguments . callee , a . forEach ( function ( a ) { return Array . prototype . push . apply ( b , Array . isArray ( a ) ? c ( a ) : [ a ] ) } ) , b } } , c . Physics . P2 . PointProxy = function ( a , b ) { this . world = a , this . destination = b } , c . Physics . P2 . PointProxy . prototype . constructor = c . Physics . P2 . PointProxy , Object . defineProperty ( c . Physics . P2 . PointProxy . prototype , "x" , { get : function ( ) { return this . world . mpx ( this . destination [ 0 ] ) } , set : function ( a ) { this . destination [ 0 ] = this . world . pxm ( a ) } } ) , Object . defineProperty ( c . Physics . P2 . PointProxy . prototype , "y" , { get : function ( ) { return this . world . mpx ( this . destination [ 1 ] ) } , set : function ( a ) { this . destination [ 1 ] = this . world . pxm ( a ) } } ) , Object . defineProperty ( c . Physics . P2 . PointProxy . prototype , "mx" , { get : function ( ) { return this . destination [ 0 ] } , set : function ( a ) { this . destination [ 0 ] = a } } ) , Object . defineProperty ( c . Physics . P2 . PointProxy . prototype , "my" , { get : function ( ) { return this . destination [ 1 ] } , set : function ( a ) { this . destination [ 1 ] = a } } ) , c . Physics . P2 . InversePointProxy = function ( a , b ) { this . world = a , this . destination = b } , c . Physics . P2 . InversePointProxy . prototype . constructor = c . Physics . P2 . InversePointProxy , Object . defineProperty ( c . Physics . P2 . InversePointProxy . prototype , "x" , { get : function ( ) { return this . world . mpxi ( this . destination [ 0 ] ) } , set : function ( a ) { this . destination [ 0 ] = this . world . pxmi ( a ) } } ) , Object . defineProperty ( c . Physics . P2 . InversePointProxy . prototype , "y" , { get : function ( ) { return this . world . mpxi ( this . destination [ 1 ] ) } , set : function ( a ) { this . destination [ 1 ] = this . world . pxmi ( a ) } } ) , Object . defineProperty ( c . Physics . P2 . InversePointProxy . prototype , "mx" , { get : function ( ) { return this . destination [ 0 ] } , set : function ( a ) { this . destination [ 0 ] = - a } } ) , Object . defineProperty ( c . Physics . P2 . InversePointProxy . prototype , "my" , { get : function ( ) { return this . destination [ 1 ] } , set : function ( a ) { this . destination [ 1 ] = - a } } ) , c . Physics . P2 . Body = function ( a , b , d , e , f ) { b = b || null , d = d || 0 , e = e || 0 , "undefined" == typeof f && ( f = 1 ) , this . game = a , this . world = a . physics . p2 , this . sprite = b , this . type = c . Physics . P2JS , this . offset = new c . Point , this . data = new p2 . Body ( { position : [ this . world . pxmi ( d ) , this . world . pxmi ( e ) ] , mass : f } ) , this . data . parent = this , this . velocity = new c . Physics . P2 . InversePointProxy ( this . world , this . data . velocity ) , this . force = new c . Physics . P2 . InversePointProxy ( this . world , this . data . force ) , this . gravity = new c . Point , this . onBeginContact = new c . Signal , this . onEndContact = new c . Signal , this . collidesWith = [ ] , this . remo
for ( var o in this . objects [ a ] [ m ] . properties ) h . set ( k , o , this . objects [ a ] [ m ] . properties [ o ] , ! 1 , ! 1 , 0 , ! 0 ) } } , createFromTiles : function ( a , b , d , e , f , g ) { "number" == typeof a && ( a = [ a ] ) , "undefined" == typeof b || null === b ? b = [ ] : "number" == typeof b && ( b = [ b ] ) , e = this . getLayer ( e ) , "undefined" == typeof f && ( f = this . game . world ) , "undefined" == typeof g && ( g = { } ) , void 0 === g . customClass && ( g . customClass = c . Sprite ) , void 0 === g . adjustY && ( g . adjustY = ! 0 ) ; var h = this . layers [ e ] . width , i = this . layers [ e ] . height ; if ( this . copy ( 0 , 0 , h , i , e ) , this . _results . length < 2 ) return 0 ; for ( var j , k = 0 , l = 1 , m = this . _results . length ; m > l ; l ++ ) if ( - 1 !== a . indexOf ( this . _results [ l ] . index ) ) { j = new g . customClass ( this . game , this . _results [ l ] . worldX , this . _results [ l ] . worldY , d ) ; for ( var n in g ) j [ n ] = g [ n ] ; f . add ( j ) , k ++ } if ( 1 === b . length ) for ( l = 0 ; l < a . length ; l ++ ) this . replace ( a [ l ] , b [ 0 ] , 0 , 0 , h , i , e ) ; else if ( b . length > 1 ) for ( l = 0 ; l < a . length ; l ++ ) this . replace ( a [ l ] , b [ l ] , 0 , 0 , h , i , e ) ; return k } , createLayer : function ( a , b , d , e ) { "undefined" == typeof b && ( b = this . game . width ) , "undefined" == typeof d && ( d = this . game . height ) , "undefined" == typeof e && ( e = this . game . world ) ; var f = a ; return "string" == typeof a && ( f = this . getLayerIndex ( a ) ) , null === f || f > this . layers . length ? void console . warn ( "Tilemap.createLayer: Invalid layer ID given: " + f ) : e . add ( new c . TilemapLayer ( this . game , this , f , b , d ) ) } , createBlankLayer : function ( a , b , d , e , f , g ) { if ( "undefined" == typeof g && ( g = this . game . world ) , null !== this . getLayerIndex ( a ) ) return void console . warn ( "Tilemap.createBlankLayer: Layer with matching name already exists" ) ; for ( var h , i = { name : a , x : 0 , y : 0 , width : b , height : d , widthInPixels : b * e , heightInPixels : d * f , alpha : 1 , visible : ! 0 , properties : { } , indexes : [ ] , callbacks : [ ] , bodies : [ ] , data : null } , j = [ ] , k = 0 ; d > k ; k ++ ) { h = [ ] ; for ( var l = 0 ; b > l ; l ++ ) h . push ( new c . Tile ( i , - 1 , l , k , e , f ) ) ; j . push ( h ) } i . data = j , this . layers . push ( i ) , this . currentLayer = this . layers . length - 1 ; var m = i . widthInPixels , n = i . heightInPixels ; m > this . game . width && ( m = this . game . width ) , n > this . game . height && ( n = this . game . height ) ; var j = new c . TilemapLayer ( this . game , this , this . layers . length - 1 , m , n ) ; return j . name = a , g . add ( j ) } , getIndex : function ( a , b ) { for ( var c = 0 ; c < a . length ; c ++ ) if ( a [ c ] . name === b ) return c ; return null } , getLayerIndex : function ( a ) { return this . getIndex ( this . layers , a ) } , getTilesetIndex : function ( a ) { return this . getIndex ( this . tilesets , a ) } , getImageIndex : function ( a ) { return this . getIndex ( this . images , a ) } , getObjectIndex : function ( a ) { return this . getIndex ( this . objects , a ) } , setTileIndexCallback : function ( a , b , c , d ) { if ( d = this . getLayer ( d ) , "number" == typeof a ) this . layers [ d ] . callbacks [ a ] = { callback : b , callbackContext : c } ; else for ( var e = 0 , f = a . length ; f > e ; e ++ ) this . layers [ d ] . callbacks [ a [ e ] ] = { callback : b , callbackContext : c } } , setTileLocationCallback : function ( a , b , c , d , e , f , g ) { if ( g = this . getLayer ( g ) , this . copy ( a , b , c , d , g ) , ! ( this . _results . length < 2 ) ) for ( var h = 1 ; h < this . _results . length ; h ++ ) this . _results [ h ] . setCollisionCallback ( e , f ) } , setCollision : function ( a , b , c , d ) { if ( "undefined" == typeof b && ( b = ! 0 ) , "undefined" == typeof d && ( d = ! 0 ) , c = this . getLayer ( c ) , "number" == typeof a ) return this . setCollisionByIndex ( a , b , c , ! 0 ) ; if ( Array . isArray ( a ) ) { for ( var e = 0 ; e < a . length ; e ++ ) this . setCollisionByIndex ( a [ e ] , b , c , ! 1 ) ; d && this . calculateFaces ( c ) } } , setCollisionBetween : function ( a , b , c , d , e ) { if ( "undefined" == typeof c && ( c = ! 0 ) , "undefined" == typeof e && ( e = ! 0 ) , d = this . getLayer ( d ) , ! ( a > b ) ) { for ( var f = a ; b >= f ; f ++ ) this . setCollisionByIndex ( f , c , d , ! 1 ) ; e && this . calculateFaces ( d ) } } , setCollisionByExclusion : function ( a , b , c , d ) { "undefined" == typeof b && ( b = ! 0 ) , "undefined" == typeof d && ( d = ! 0 ) , c = this . getLayer ( c ) ; for ( var e = 0 , f = this . tiles . length ; f > e ; e ++ ) - 1 === a . indexOf ( e ) && this . setCollisionByIndex ( e , b , c , ! 1 ) ; d && this . calculateFaces ( c ) } , setCollisionByIndex : function ( a , b , c , d ) { if ( "undefined" == typeof b && ( b = ! 0 ) , "undefined" == typeof c && ( c = this . currentLayer ) , "undefined" == typeof d && ( d = ! 0 ) , b ) this . collideIndexes . push ( a ) ; else { var e = this . collideIndexes . indexOf ( a ) ; e > - 1 && this . collideIndexes . splice ( e , 1 ) } for ( var f = 0 ; f < this . layers [ c ] . height ; f ++ ) for ( var g = 0 ; g < this . layers [ c ] . width ; g ++ ) { var h = this . layers [ c ] . data [ f ] [ g ] ; h && h . index === a && ( b ? h . setCollision ( ! 0 , ! 0 , ! 0 , ! 0 ) : h . resetCollision ( ) , h . faceTop = b , h . faceBottom = b , h . faceLeft = b , h . faceRight = b ) } return d && this . calculateFaces ( c ) , c } , getLayer : function ( a ) { return "undefined" == typeof a ? a = th
return this } , c . Particles . Arcade . Emitter . prototype . kill = function ( ) { this . on = ! 1 , this . alive = ! 1 , this . exists = ! 1 } , c . Particles . Arcade . Emitter . prototype . revive = function ( ) { this . alive = ! 0 , this . exists = ! 0 } , c . Particles . Arcade . Emitter . prototype . explode = function ( a , b ) { this . _flowTotal = 0 , this . start ( ! 0 , a , 0 , b , ! 1 ) } , c . Particles . Arcade . Emitter . prototype . flow = function ( a , b , c , d , e ) { ( "undefined" == typeof c || 0 === c ) && ( c = 1 ) , "undefined" == typeof d && ( d = - 1 ) , "undefined" == typeof e && ( e = ! 0 ) , c > this . maxParticles && ( c = this . maxParticles ) , this . _counter = 0 , this . _flowQuantity = c , this . _flowTotal = d , e ? ( this . start ( ! 0 , a , b , c ) , this . _counter += c , this . on = ! 0 , this . _timer = this . game . time . time + b * this . game . time . slowMotion ) : this . start ( ! 1 , a , b , c ) } , c . Particles . Arcade . Emitter . prototype . start = function ( a , b , c , d , e ) { if ( "undefined" == typeof a && ( a = ! 0 ) , "undefined" == typeof b && ( b = 0 ) , ( "undefined" == typeof c || null === c ) && ( c = 250 ) , "undefined" == typeof d && ( d = 0 ) , "undefined" == typeof e && ( e = ! 1 ) , d > this . maxParticles && ( d = this . maxParticles ) , this . revive ( ) , this . visible = ! 0 , this . lifespan = b , this . frequency = c , a || e ) for ( var f = 0 ; d > f ; f ++ ) this . emitParticle ( ) ; else this . on = ! 0 , this . _quantity += d , this . _counter = 0 , this . _timer = this . game . time . time + c * this . game . time . slowMotion } , c . Particles . Arcade . Emitter . prototype . emitParticle = function ( ) { var a = this . getFirstExists ( ! 1 ) ; return null === a ? ! 1 : ( this . width > 1 || this . height > 1 ? a . reset ( this . game . rnd . integerInRange ( this . left , this . right ) , this . game . rnd . integerInRange ( this . top , this . bottom ) ) : a . reset ( this . emitX , this . emitY ) , a . angle = 0 , a . lifespan = this . lifespan , this . particleBringToTop ? this . bringToTop ( a ) : this . particleSendToBack && this . sendToBack ( a ) , this . autoScale ? a . setScaleData ( this . scaleData ) : 1 !== this . minParticleScale || 1 !== this . maxParticleScale ? a . scale . set ( this . game . rnd . realInRange ( this . minParticleScale , this . maxParticleScale ) ) : ( this . _minParticleScale . x !== this . _maxParticleScale . x || this . _minParticleScale . y !== this . _maxParticleScale . y ) && a . scale . set ( this . game . rnd . realInRange ( this . _minParticleScale . x , this . _maxParticleScale . x ) , this . game . rnd . realInRange ( this . _minParticleScale . y , this . _maxParticleScale . y ) ) , a . frame = Array . isArray ( "object" === this . _frames ) ? this . game . rnd . pick ( this . _frames ) : this . _frames , this . autoAlpha ? a . setAlphaData ( this . alphaData ) : a . alpha = this . game . rnd . realInRange ( this . minParticleAlpha , this . maxParticleAlpha ) , a . blendMode = this . blendMode , a . body . updateBounds ( ) , a . body . bounce . setTo ( this . bounce . x , this . bounce . y ) , a . body . velocity . x = this . game . rnd . between ( this . minParticleSpeed . x , this . maxParticleSpeed . x ) , a . body . velocity . y = this . game . rnd . between ( this . minParticleSpeed . y , this . maxParticleSpeed . y ) , a . body . angularVelocity = this . game . rnd . between ( this . minRotation , this . maxRotation ) , a . body . gravity . y = this . gravity , a . body . drag . x = this . particleDrag . x , a . body . drag . y = this . particleDrag . y , a . body . angularDrag = this . angularDrag , a . onEmit ( ) , ! 0 ) } , c . Particles . Arcade . Emitter . prototype . destroy = function ( ) { this . game . particles . remove ( this ) , c . Group . prototype . destroy . call ( this , ! 0 , ! 1 ) } , c . Particles . Arcade . Emitter . prototype . setSize = function ( a , b ) { this . area . width = a , this . area . height = b } , c . Particles . Arcade . Emitter . prototype . setXSpeed = function ( a , b ) { a = a || 0 , b = b || 0 , this . minParticleSpeed . x = a , this . maxParticleSpeed . x = b } , c . Particles . Arcade . Emitter . prototype . setYSpeed = function ( a , b ) { a = a || 0 , b = b || 0 , this . minParticleSpeed . y = a , this . maxParticleSpeed . y = b } , c . Particles . Arcade . Emitter . prototype . setRotation = function ( a , b ) { a = a || 0 , b = b || 0 , this . minRotation = a , this . maxRotation = b } , c . Particles . Arcade . Emitter . prototype . setAlpha = function ( a , b , d , e , f ) { if ( "undefined" == typeof a && ( a = 1 ) , "undefined" == typeof b && ( b = 1 ) , "undefined" == typeof d && ( d = 0 ) , "undefined" == typeof e && ( e = c . Easing . Linear . None ) , "undefined" == typeof f && ( f = ! 1 ) , this . minParticleAlpha = a , this . maxParticleAlpha = b , this . autoAlpha = ! 1 , d > 0 && a !== b ) { var g = { v : a } , h = this . game . make . tween ( g ) . to ( { v : b } , d , e ) ; h . yoyo ( f ) , this . alphaData = h . generateData ( 60 ) , this . alphaData . reverse ( ) , this . autoAlpha = ! 0 } } , c . Particles . Arcade . Emitter . prototype . setScale = function ( a , b , d , e , f , g , h ) { if ( "undefined" == typeof a && ( a = 1 ) , "undefined" == typeof b && ( b = 1 ) , "undefined" == typeof d && ( d = 1 ) , "undefined" == typeof e && ( e = 1 ) , "undefined" == typeof f && ( f = 0 ) , "undefined" == typeof g && ( g = c . Easing . Linear . None ) , "undefined" ==
2014-02-28 09:30:53 +00:00
//# sourceMappingURL=phaser.map