2016-07-18 22:43:27 +00:00
/* Phaser v2.6.2 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */
2014-02-28 09:30:53 +00:00
2016-07-23 14:05:52 +00:00
! function ( a ) { if ( "object" == typeof exports ) module . exports = a ( ) ; else if ( "function" == typeof define , 1 ) { var b ; "undefined" != typeof window ? b = window : "undefined" != typeof global ? b = global : "undefined" != typeof self && ( b = self ) , b . p2 = a ( ) } else define ( a ) } ( function ( ) { return function a ( b , c , d ) { function e ( g , h ) { if ( ! c [ g ] ) { if ( ! b [ g ] ) { var i = "function" == typeof require && require ; if ( ! h && i ) return i ( g , ! 0 ) ; if ( f ) return f ( g , ! 0 ) ; throw new Error ( "Cannot find module '" + g + "'" ) } var j = c [ g ] = { exports : { } } ; b [ g ] [ 0 ] . call ( j . exports , function ( a ) { var c = b [ g ] [ 1 ] [ a ] ; return e ( c ? c : a ) } , j , j . exports , a , b , c , d ) } return c [ g ] . exports } for ( var f = "function" == typeof require && require , g = 0 ; g < d . length ; g ++ ) e ( d [ g ] ) ; return e } ( { 1 : [ function ( a , b , c ) { function d ( ) { } var e = a ( "./Scalar" ) ; b . exports = d , d . lineInt = function ( a , b , c ) { c = c || 0 ; var d , f , g , h , i , j , k , l = [ 0 , 0 ] ; return d = a [ 1 ] [ 1 ] - a [ 0 ] [ 1 ] , f = a [ 0 ] [ 0 ] - a [ 1 ] [ 0 ] , g = d * a [ 0 ] [ 0 ] + f * a [ 0 ] [ 1 ] , h = b [ 1 ] [ 1 ] - b [ 0 ] [ 1 ] , i = b [ 0 ] [ 0 ] - b [ 1 ] [ 0 ] , j = h * b [ 0 ] [ 0 ] + i * b [ 0 ] [ 1 ] , k = d * i - h * f , e . eq ( k , 0 , c ) || ( l [ 0 ] = ( i * g - f * j ) / k , l [ 1 ] = ( d * j - h * g ) / k ) , l } , d . segmentsIntersect = function ( a , b , c , d ) { var e = b [ 0 ] - a [ 0 ] , f = b [ 1 ] - a [ 1 ] , g = d [ 0 ] - c [ 0 ] , h = d [ 1 ] - c [ 1 ] ; if ( g * f - h * e == 0 ) return ! 1 ; var i = ( e * ( c [ 1 ] - a [ 1 ] ) + f * ( a [ 0 ] - c [ 0 ] ) ) / ( g * f - h * e ) , j = ( g * ( a [ 1 ] - c [ 1 ] ) + h * ( c [ 0 ] - a [ 0 ] ) ) / ( h * e - g * f ) ; return i >= 0 && i <= 1 && j >= 0 && j <= 1 } } , { "./Scalar" : 4 } ] , 2 : [ function ( a , b , c ) { function d ( ) { } b . exports = d , d . area = function ( a , b , c ) { return ( b [ 0 ] - a [ 0 ] ) * ( c [ 1 ] - a [ 1 ] ) - ( c [ 0 ] - a [ 0 ] ) * ( b [ 1 ] - a [ 1 ] ) } , d . left = function ( a , b , c ) { return d . area ( a , b , c ) > 0 } , d . leftOn = function ( a , b , c ) { return d . area ( a , b , c ) >= 0 } , d . right = function ( a , b , c ) { return d . area ( a , b , c ) < 0 } , d . rightOn = function ( a , b , c ) { return d . area ( a , b , c ) <= 0 } ; var e = [ ] , f = [ ] ; d . collinear = function ( a , b , c , g ) { if ( g ) { var h = e , i = f ; h [ 0 ] = b [ 0 ] - a [ 0 ] , h [ 1 ] = b [ 1 ] - a [ 1 ] , i [ 0 ] = c [ 0 ] - b [ 0 ] , i [ 1 ] = c [ 1 ] - b [ 1 ] ; var j = h [ 0 ] * i [ 0 ] + h [ 1 ] * i [ 1 ] , k = Math . sqrt ( h [ 0 ] * h [ 0 ] + h [ 1 ] * h [ 1 ] ) , l = Math . sqrt ( i [ 0 ] * i [ 0 ] + i [ 1 ] * i [ 1 ] ) , m = Math . acos ( j / ( k * l ) ) ; return m < g } return 0 == d . area ( a , b , c ) } , d . sqdist = function ( a , b ) { var c = b [ 0 ] - a [ 0 ] , d = b [ 1 ] - a [ 1 ] ; return c * c + d * d } } , { } ] , 3 : [ function ( a , b , c ) { function d ( ) { this . vertices = [ ] } function e ( a , b , c , d , e ) { e = e || 0 ; var f = b [ 1 ] - a [ 1 ] , g = a [ 0 ] - b [ 0 ] , i = f * a [ 0 ] + g * a [ 1 ] , j = d [ 1 ] - c [ 1 ] , k = c [ 0 ] - d [ 0 ] , l = j * c [ 0 ] + k * c [ 1 ] , m = f * k - j * g ; return h . eq ( m , 0 , e ) ? [ 0 , 0 ] : [ ( k * i - g * l ) / m , ( f * l - j * i ) / m ] } var f = a ( "./Line" ) , g = a ( "./Point" ) , h = a ( "./Scalar" ) ; b . exports = d , d . prototype . at = function ( a ) { var b = this . vertices , c = b . length ; return b [ a < 0 ? a % c + c : a % c ] } , d . prototype . first = function ( ) { return this . vertices [ 0 ] } , d . prototype . last = function ( ) { return this . vertices [ this . vertices . length - 1 ] } , d . prototype . clear = function ( ) { this . vertices . length = 0 } , d . prototype . append = function ( a , b , c ) { if ( "undefined" == typeof b ) throw new Error ( "From is not given!" ) ; if ( "undefined" == typeof c ) throw new Error ( "To is not given!" ) ; if ( c - 1 < b ) throw new Error ( "lol1" ) ; if ( c > a . vertices . length ) throw new Error ( "lol2" ) ; if ( b < 0 ) throw new Error ( "lol3" ) ; for ( var d = b ; d < c ; d ++ ) this . vertices . push ( a . vertices [ d ] ) } , d . prototype . makeCCW = function ( ) { for ( var a = 0 , b = this . vertices , c = 1 ; c < this . vertices . length ; ++ c ) ( b [ c ] [ 1 ] < b [ a ] [ 1 ] || b [ c ] [ 1 ] == b [ a ] [ 1 ] && b [ c ] [ 0 ] > b [ a ] [ 0 ] ) && ( a = c ) ; g . left ( this . at ( a - 1 ) , this . at ( a ) , this . at ( a + 1 ) ) || this . reverse ( ) } , d . prototype . reverse = function ( ) { for ( var a = [ ] , b = 0 , c = this . vertices . length ; b !== c ; b ++ ) a . push ( this . vertices . pop ( ) ) ; this . vertices = a } , d . prototype . isReflex = function ( a ) { return g . right ( this . at ( a - 1 ) , this . at ( a ) , this . at ( a + 1 ) ) } ; var i = [ ] , j = [ ] ; d . prototype . canSee = function ( a , b ) { var c , d , e = i , h = j ; if ( g . leftOn ( this . at ( a + 1 ) , this . at ( a ) , this . at ( b ) ) && g . rightOn ( this . at ( a - 1 ) , this . at ( a ) , this . at ( b ) ) ) return ! 1 ; d = g . sqdist ( this . at ( a ) , this . at ( b ) ) ; for ( var k = 0 ; k !== this . vertices . length ; ++ k ) if ( ( k + 1 ) % this . vertices . length !== a && k !== a && g . leftOn ( this . at ( a ) , this . at ( b ) , this . at ( k + 1 ) ) && g . rightOn ( this . at ( a ) , this . at ( b ) , this . at ( k ) ) && ( e [ 0 ] = this . at ( a ) , e [ 1 ] = this . at ( b ) , h [ 0 ] = this . at ( k ) , h [ 1 ] = this . at ( k + 1 ) , c = f . lineInt ( e , h ) , g . sqdist ( this . at ( a ) , c ) < d ) ) return ! 1 ; return ! 0 } , d . prototype . copy = function ( a , b , c ) { var e = c || new d ; if ( e . clear ( ) , a < b ) for ( var f = a ; f <= b ; f ++ ) e . vertices . push ( this . vertices [ f ] ) ; else { for ( var f = 0 ; f <= b ; f ++ ) e . vertices . push ( this . vertices [ f ] ) ; for ( var f = a ; f < this . vertices . length ; f ++ ) e . vertices . push ( this . vertices [ f ] ) } return e } , d . prototype . getCutEdges = function ( ) { for ( var a = [ ] , b = [ ] , c = [ ] , e = new d , f = Number . MAX _VALUE , g = 0 ; g < this . vertices . length ; ++ g ) if ( this . isReflex ( g ) ) for ( var h = 0 ; h < thi
B = ! 0 ; var D = this . createContactEquation ( e , a , f , b ) ; g . copy ( D . normalA , p ) , g . normalize ( D . normalA , D . normalA ) , g . scale ( D . contactPointB , D . normalA , - m ) , i ( D . contactPointB , D . contactPointB , c ) , h ( D . contactPointB , D . contactPointB , a . position ) , h ( D . contactPointA , u , j ) , i ( D . contactPointA , D . contactPointA , j ) , h ( D . contactPointA , D . contactPointA , e . position ) , this . contactEquations . push ( D ) , this . enableFriction && this . frictionEquations . push ( this . createFrictionFromContact ( D ) ) } return B ? 1 : 0 } ; var pa = g . create ( ) , qa = g . create ( ) , ra = g . create ( ) , sa = new p ( { vertices : [ g . create ( ) , g . create ( ) , g . create ( ) , g . create ( ) ] } ) ; d . prototype [ q . BOX | q . HEIGHTFIELD ] = d . prototype [ q . CONVEX | q . HEIGHTFIELD ] = d . prototype . convexHeightfield = function ( a , b , c , d , e , f , h , i , j ) { var k = f . heights , l = f . elementWidth , m = pa , n = qa , o = ra , p = sa , q = Math . floor ( ( a . aabb . lowerBound [ 0 ] - h [ 0 ] ) / l ) , r = Math . ceil ( ( a . aabb . upperBound [ 0 ] - h [ 0 ] ) / l ) ; q < 0 && ( q = 0 ) , r >= k . length && ( r = k . length - 1 ) ; for ( var s = k [ q ] , t = k [ r ] , u = q ; u < r ; u ++ ) k [ u ] < t && ( t = k [ u ] ) , k [ u ] > s && ( s = k [ u ] ) ; if ( a . aabb . lowerBound [ 1 ] > s ) return ! j && 0 ; for ( var v = 0 , u = q ; u < r ; u ++ ) { g . set ( m , u * l , k [ u ] ) , g . set ( n , ( u + 1 ) * l , k [ u + 1 ] ) , g . add ( m , m , h ) , g . add ( n , n , h ) ; var w = 100 ; g . set ( o , . 5 * ( n [ 0 ] + m [ 0 ] ) , . 5 * ( n [ 1 ] + m [ 1 ] - w ) ) , g . sub ( p . vertices [ 0 ] , n , o ) , g . sub ( p . vertices [ 1 ] , m , o ) , g . copy ( p . vertices [ 2 ] , p . vertices [ 1 ] ) , g . copy ( p . vertices [ 3 ] , p . vertices [ 0 ] ) , p . vertices [ 2 ] [ 1 ] -= w , p . vertices [ 3 ] [ 1 ] -= w , v += this . convexConvex ( a , b , c , d , e , p , o , 0 , j ) } return v } } , { "../equations/ContactEquation" : 21 , "../equations/Equation" : 22 , "../equations/FrictionEquation" : 23 , "../math/vec2" : 30 , "../objects/Body" : 31 , "../shapes/Box" : 37 , "../shapes/Circle" : 39 , "../shapes/Convex" : 40 , "../shapes/Shape" : 45 , "../utils/ContactEquationPool" : 48 , "../utils/FrictionEquationPool" : 49 , "../utils/TupleDictionary" : 56 , "../utils/Utils" : 57 } ] , 11 : [ function ( a , b , c ) { function d ( a ) { a = a || { } , this . from = a . from ? f . fromValues ( a . from [ 0 ] , a . from [ 1 ] ) : f . create ( ) , this . to = a . to ? f . fromValues ( a . to [ 0 ] , a . to [ 1 ] ) : f . create ( ) , this . checkCollisionResponse = void 0 === a . checkCollisionResponse || a . checkCollisionResponse , this . skipBackfaces = ! ! a . skipBackfaces , this . collisionMask = void 0 !== a . collisionMask ? a . collisionMask : - 1 , this . collisionGroup = void 0 !== a . collisionGroup ? a . collisionGroup : - 1 , this . mode = void 0 !== a . mode ? a . mode : d . ANY , this . callback = a . callback || function ( a ) { } , this . direction = f . create ( ) , this . length = 1 , this . update ( ) } function e ( a , b , c ) { f . sub ( h , c , a ) ; var d = f . dot ( h , b ) ; return f . scale ( i , b , d ) , f . add ( i , i , a ) , f . squaredDistance ( c , i ) } b . exports = d ; var f = a ( "../math/vec2" ) ; a ( "../collision/RaycastResult" ) , a ( "../shapes/Shape" ) , a ( "../collision/AABB" ) ; d . prototype . constructor = d , d . CLOSEST = 1 , d . ANY = 2 , d . ALL = 4 , d . prototype . update = function ( ) { var a = this . direction ; f . sub ( a , this . to , this . from ) , this . length = f . length ( a ) , f . normalize ( a , a ) } , d . prototype . intersectBodies = function ( a , b ) { for ( var c = 0 , d = b . length ; ! a . shouldStop ( this ) && c < d ; c ++ ) { var e = b [ c ] , f = e . getAABB ( ) ; ( f . overlapsRay ( this ) >= 0 || f . containsPoint ( this . from ) ) && this . intersectBody ( a , e ) } } ; var g = f . create ( ) ; d . prototype . intersectBody = function ( a , b ) { var c = this . checkCollisionResponse ; if ( ! c || b . collisionResponse ) for ( var d = g , e = 0 , h = b . shapes . length ; e < h ; e ++ ) { var i = b . shapes [ e ] ; if ( ( ! c || i . collisionResponse ) && 0 !== ( this . collisionGroup & i . collisionMask ) && 0 !== ( i . collisionGroup & this . collisionMask ) ) { f . rotate ( d , i . position , b . angle ) , f . add ( d , d , b . position ) ; var j = i . angle + b . angle ; if ( this . intersectShape ( a , i , j , d , b ) , a . shouldStop ( this ) ) break } } } , d . prototype . intersectShape = function ( a , b , c , d , f ) { var g = this . from , h = e ( g , this . direction , d ) ; h > b . boundingRadius * b . boundingRadius || ( this . _currentBody = f , this . _currentShape = b , b . raycast ( a , this , d , c ) , this . _currentBody = this . _currentShape = null ) } , d . prototype . getAABB = function ( a ) { var b = this . to , c = this . from ; f . set ( a . lowerBound , Math . min ( b [ 0 ] , c [ 0 ] ) , Math . min ( b [ 1 ] , c [ 1 ] ) ) , f . set ( a . upperBound , Math . max ( b [ 0 ] , c [ 0 ] ) , Math . max ( b [ 1 ] , c [ 1 ] ) ) } ; f . create ( ) ; d . prototype . reportIntersection = function ( a , b , c , e ) { var g = ( this . from , this . to , this . _currentShape ) , h = this . _currentBody ; if ( ! ( this . skipBackfaces && f . dot ( c , this . direction ) > 0 ) ) switch ( this . mode ) { case d . ALL : a . set ( c , g , h , b , e ) , this . callback ( a ) ; break ; case d . CLOSEST : ( b < a . fraction || ! a . hasHit ( ) ) && a . set ( c , g , h , b , e ) ; break ; case d . ANY : a . set ( c , g , h , b , e ) } } ; var h = f . create ( ) , i = f . create ( ) } , { "../collision/AABB" : 7 , "../collision/RaycastResult" : 12 , " . . / math
this . wantsToSleep = ! 1 , this . sleepState = d . AWAKE , this . sleepSpeedLimit = void 0 !== a . sleepSpeedLimit ? a . sleepSpeedLimit : . 2 , this . sleepTimeLimit = void 0 !== a . sleepTimeLimit ? a . sleepTimeLimit : 1 , this . gravityScale = void 0 !== a . gravityScale ? a . gravityScale : 1 , this . collisionResponse = void 0 === a . collisionResponse || a . collisionResponse , this . idleTime = 0 , this . timeLastSleepy = 0 , this . ccdSpeedThreshold = void 0 !== a . ccdSpeedThreshold ? a . ccdSpeedThreshold : - 1 , this . ccdIterations = void 0 !== a . ccdIterations ? a . ccdIterations : 10 , this . concavePath = null , this . _wakeUpAfterNarrowphase = ! 1 , this . updateMassProperties ( ) } var e = a ( "../math/vec2" ) , f = a ( "poly-decomp" ) , g = a ( "../shapes/Convex" ) , h = a ( "../collision/RaycastResult" ) , i = a ( "../collision/Ray" ) , j = a ( "../collision/AABB" ) , k = a ( "../events/EventEmitter" ) ; b . exports = d , d . prototype = new k , d . prototype . constructor = d , d . _idCounter = 0 , d . prototype . updateSolveMassProperties = function ( ) { this . sleepState === d . SLEEPING || this . type === d . KINEMATIC ? ( this . invMassSolve = 0 , this . invInertiaSolve = 0 ) : ( this . invMassSolve = this . invMass , this . invInertiaSolve = this . invInertia ) } , d . prototype . setDensity = function ( a ) { var b = this . getArea ( ) ; this . mass = b * a , this . updateMassProperties ( ) } , d . prototype . getArea = function ( ) { for ( var a = 0 , b = 0 ; b < this . shapes . length ; b ++ ) a += this . shapes [ b ] . area ; return a } , d . prototype . getAABB = function ( ) { return this . aabbNeedsUpdate && this . updateAABB ( ) , this . aabb } ; var l = new j , m = e . create ( ) ; d . prototype . updateAABB = function ( ) { for ( var a = this . shapes , b = a . length , c = m , d = this . angle , f = 0 ; f !== b ; f ++ ) { var g = a [ f ] , h = g . angle + d ; e . rotate ( c , g . position , d ) , e . add ( c , c , this . position ) , g . computeAABB ( l , c , h ) , 0 === f ? this . aabb . copy ( l ) : this . aabb . extend ( l ) } this . aabbNeedsUpdate = ! 1 } , d . prototype . updateBoundingRadius = function ( ) { for ( var a = this . shapes , b = a . length , c = 0 , d = 0 ; d !== b ; d ++ ) { var f = a [ d ] , g = e . length ( f . position ) , h = f . boundingRadius ; g + h > c && ( c = g + h ) } this . boundingRadius = c } , d . prototype . addShape = function ( a , b , c ) { if ( a . body ) throw new Error ( "A shape can only be added to one body." ) ; a . body = this , b ? e . copy ( a . position , b ) : e . set ( a . position , 0 , 0 ) , a . angle = c || 0 , this . shapes . push ( a ) , this . updateMassProperties ( ) , this . updateBoundingRadius ( ) , this . aabbNeedsUpdate = ! 0 } , d . prototype . removeShape = function ( a ) { var b = this . shapes . indexOf ( a ) ; return b !== - 1 && ( this . shapes . splice ( b , 1 ) , this . aabbNeedsUpdate = ! 0 , a . body = null , ! 0 ) } , d . prototype . updateMassProperties = function ( ) { if ( this . type === d . STATIC || this . type === d . KINEMATIC ) this . mass = Number . MAX _VALUE , this . invMass = 0 , this . inertia = Number . MAX _VALUE , this . invInertia = 0 ; else { var a = this . shapes , b = a . length , c = this . mass / b , f = 0 ; if ( this . fixedRotation ) this . inertia = Number . MAX _VALUE , this . invInertia = 0 ; else { for ( var g = 0 ; g < b ; g ++ ) { var h = a [ g ] , i = e . squaredLength ( h . position ) , j = h . computeMomentOfInertia ( c ) ; f += j + c * i } this . inertia = f , this . invInertia = f > 0 ? 1 / f : 0 } this . invMass = 1 / this . mass , e . set ( this . massMultiplier , this . fixedX ? 0 : 1 , this . fixedY ? 0 : 1 ) } } ; e . create ( ) ; d . prototype . applyForce = function ( a , b ) { if ( e . add ( this . force , this . force , a ) , b ) { var c = e . crossLength ( b , a ) ; this . angularForce += c } } ; var n = e . create ( ) , o = e . create ( ) , p = e . create ( ) ; d . prototype . applyForceLocal = function ( a , b ) { b = b || p ; var c = n , d = o ; this . vectorToWorldFrame ( c , a ) , this . vectorToWorldFrame ( d , b ) , this . applyForce ( c , d ) } ; var q = e . create ( ) ; d . prototype . applyImpulse = function ( a , b ) { if ( this . type === d . DYNAMIC ) { var c = q ; if ( e . scale ( c , a , this . invMass ) , e . multiply ( c , this . massMultiplier , c ) , e . add ( this . velocity , c , this . velocity ) , b ) { var f = e . crossLength ( b , a ) ; f *= this . invInertia , this . angularVelocity += f } } } ; var r = e . create ( ) , s = e . create ( ) , t = e . create ( ) ; d . prototype . applyImpulseLocal = function ( a , b ) { b = b || t ; var c = r , d = s ; this . vectorToWorldFrame ( c , a ) , this . vectorToWorldFrame ( d , b ) , this . applyImpulse ( c , d ) } , d . prototype . toLocalFrame = function ( a , b ) { e . toLocalFrame ( a , b , this . position , this . angle ) } , d . prototype . toWorldFrame = function ( a , b ) { e . toGlobalFrame ( a , b , this . position , this . angle ) } , d . prototype . vectorToLocalFrame = function ( a , b ) { e . vectorToLocalFrame ( a , b , this . angle ) } , d . prototype . vectorToWorldFrame = function ( a , b ) { e . vectorToGlobalFrame ( a , b , this . angle ) } , d . prototype . fromPolygon = function ( a , b ) { b = b || { } ; for ( var c = this . shapes . length ; c >= 0 ; -- c ) this . removeShape ( this . shapes [ c ] ) ; var d = new f . Polygon ; if ( d . vertices = a , d . makeCCW ( ) , "number" == typeof b . removeCollinearPoints && d . removeColli
2016-08-26 00:18:47 +00:00
b . exports = d , d . prototype = new g , d . prototype . constructor = d , d . prototype . solve = function ( a , b ) { this . sortEquations ( ) ; var c = 0 , g = this . iterations , j = this . frictionIterations , k = this . equations , l = k . length , m = Math . pow ( this . tolerance * l , 2 ) , n = b . bodies , o = b . bodies . length , p = ( f . add , f . set , this . useZeroRHS ) , q = this . lambda ; if ( this . usedIterations = 0 , l ) for ( var r = 0 ; r !== o ; r ++ ) { var s = n [ r ] ; s . updateSolveMassProperties ( ) } q . length < l && ( q = this . lambda = new h . ARRAY _TYPE ( l + this . arrayStep ) , this . Bs = new h . ARRAY _TYPE ( l + this . arrayStep ) , this . invCs = new h . ARRAY _TYPE ( l + this . arrayStep ) ) , e ( q ) ; for ( var t = this . invCs , u = this . Bs , q = this . lambda , r = 0 ; r !== k . length ; r ++ ) { var v = k [ r ] ; ( v . timeStep !== a || v . needsUpdate ) && ( v . timeStep = a , v . update ( ) ) , u [ r ] = v . computeB ( v . a , v . b , a ) , t [ r ] = v . computeInvC ( v . epsilon ) } var v , w , r , x ; if ( 0 !== l ) { for ( r = 0 ; r !== o ; r ++ ) { var s = n [ r ] ; s . resetConstraintVelocity ( ) } if ( j ) { for ( c = 0 ; c !== j ; c ++ ) { for ( w = 0 , x = 0 ; x !== l ; x ++ ) { v = k [ x ] ; var y = d . iterateEquation ( x , v , v . epsilon , u , t , q , p , a , c ) ; w += Math . abs ( y ) } if ( this . usedIterations ++ , w * w <= m ) break } for ( d . updateMultipliers ( k , q , 1 / a ) , x = 0 ; x !== l ; x ++ ) { var z = k [ x ] ; if ( z instanceof i ) { for ( var A = 0 , B = 0 ; B !== z . contactEquations . length ; B ++ ) A += z . contactEquations [ B ] . multiplier ; A *= z . frictionCoefficient / z . contactEquations . length , z . maxForce = A , z . minForce = - A } } } for ( c = 0 ; c !== g ; c ++ ) { for ( w = 0 , x = 0 ; x !== l ; x ++ ) { v = k [ x ] ; var y = d . iterateEquation ( x , v , v . epsilon , u , t , q , p , a , c ) ; w += Math . abs ( y ) } if ( this . usedIterations ++ , w * w <= m ) break } for ( r = 0 ; r !== o ; r ++ ) n [ r ] . addConstraintVelocity ( ) ; d . updateMultipliers ( k , q , 1 / a ) } } , d . updateMultipliers = function ( a , b , c ) { for ( var d = a . length ; d -- ; ) a [ d ] . multiplier = b [ d ] * c } , d . iterateEquation = function ( a , b , c , d , e , f , g , h , i ) { var j = d [ a ] , k = e [ a ] , l = f [ a ] , m = b . computeGWlambda ( ) , n = b . maxForce , o = b . minForce ; g && ( j = 0 ) ; var p = k * ( j - m - c * l ) , q = l + p ; return q < o * h ? p = o * h - l : q > n * h && ( p = n * h - l ) , f [ a ] += p , b . addToWlambda ( p ) , p } } , { "../equations/FrictionEquation" : 23 , "../math/vec2" : 30 , "../utils/Utils" : 57 , "./Solver" : 47 } ] , 47 : [ function ( a , b , c ) { function d ( a , b ) { a = a || { } , e . call ( this ) , this . type = b , this . equations = [ ] , this . equationSortFunction = a . equationSortFunction || ! 1 } var e = ( a ( "../utils/Utils" ) , a ( "../events/EventEmitter" ) ) ; b . exports = d , d . prototype = new e , d . prototype . constructor = d , d . prototype . solve = function ( a , b ) { throw new Error ( "Solver.solve should be implemented by subclasses!" ) } ; var f = { bodies : [ ] } ; d . prototype . solveIsland = function ( a , b ) { this . removeAllEquations ( ) , b . equations . length && ( this . addEquations ( b . equations ) , f . bodies . length = 0 , b . getBodies ( f . bodies ) , f . bodies . length && this . solve ( a , f ) ) } , d . prototype . sortEquations = function ( ) { this . equationSortFunction && this . equations . sort ( this . equationSortFunction ) } , d . prototype . addEquation = function ( a ) { a . enabled && this . equations . push ( a ) } , d . prototype . addEquations = function ( a ) { for ( var b = 0 , c = a . length ; b !== c ; b ++ ) { var d = a [ b ] ; d . enabled && this . equations . push ( d ) } } , d . prototype . removeEquation = function ( a ) { var b = this . equations . indexOf ( a ) ; b !== - 1 && this . equations . splice ( b , 1 ) } , d . prototype . removeAllEquations = function ( ) { this . equations . length = 0 } , d . GS = 1 , d . ISLAND = 2 } , { "../events/EventEmitter" : 26 , "../utils/Utils" : 57 } ] , 48 : [ function ( a , b , c ) { function d ( ) { f . apply ( this , arguments ) } var e = a ( "../equations/ContactEquation" ) , f = a ( "./Pool" ) ; b . exports = d , d . prototype = new f , d . prototype . constructor = d , d . prototype . create = function ( ) { return new e } , d . prototype . destroy = function ( a ) { return a . bodyA = a . bodyB = null , this } } , { "../equations/ContactEquation" : 21 , "./Pool" : 55 } ] , 49 : [ function ( a , b , c ) { function d ( ) { f . apply ( this , arguments ) } var e = a ( "../equations/FrictionEquation" ) , f = a ( "./Pool" ) ; b . exports = d , d . prototype = new f , d . prototype . constructor = d , d . prototype . create = function ( ) { return new e } , d . prototype . destroy = function ( a ) { return a . bodyA = a . bodyB = null , this } } , { "../equations/FrictionEquation" : 23 , "./Pool" : 55 } ] , 50 : [ function ( a , b , c ) { function d ( ) { f . apply ( this , arguments ) } var e = a ( "../world/IslandNode" ) , f = a ( "./Pool" ) ; b . exports = d , d . prototype = new f , d . prototype . constructor = d , d . prototype . create = function ( ) { return new e } , d . prototype . destroy = function ( a ) { return a . reset ( ) , this } } , { "../world/IslandNode" : 60 , "./Pool" : 55 } ] , 51 : [ function ( a , b , c ) { function d ( ) { f . apply ( this , arguments ) } var e = a ( "../world/Island" ) , f = a ( "./Pool" ) ; b . exports = d , d . prototype = new f , d . prototype . constructor = d , d . prototype . create = function ( ) { retu
} , b . DisplayObjectContainer . prototype . displayObjectContainerUpdateTransform = b . DisplayObjectContainer . prototype . updateTransform , b . DisplayObjectContainer . prototype . getBounds = function ( a ) { var c = a && a instanceof b . DisplayObject , d = ! 0 ; c ? d = a instanceof b . DisplayObjectContainer && a . contains ( this ) : a = this ; var e ; if ( c ) { var f = a . worldTransform ; for ( a . worldTransform = b . identityMatrix , e = 0 ; e < a . children . length ; e ++ ) a . children [ e ] . updateTransform ( ) } var g , h , i , j = 1 / 0 , k = 1 / 0 , l = - ( 1 / 0 ) , m = - ( 1 / 0 ) , n = ! 1 ; for ( e = 0 ; e < this . children . length ; e ++ ) { var o = this . children [ e ] ; o . visible && ( n = ! 0 , g = this . children [ e ] . getBounds ( ) , j = j < g . x ? j : g . x , k = k < g . y ? k : g . y , h = g . width + g . x , i = g . height + g . y , l = l > h ? l : h , m = m > i ? m : i ) } var p = this . _bounds ; if ( ! n ) { p = new b . Rectangle ; var q = p . x , r = p . width + p . x , s = p . y , t = p . height + p . y , u = this . worldTransform , v = u . a , w = u . b , x = u . c , y = u . d , z = u . tx , A = u . ty , B = v * r + x * t + z , C = y * t + w * r + A , D = v * q + x * t + z , E = y * t + w * q + A , F = v * q + x * s + z , G = y * s + w * q + A , H = v * r + x * s + z , I = y * s + w * r + A ; l = B , m = C , j = B , k = C , j = D < j ? D : j , j = F < j ? F : j , j = H < j ? H : j , k = E < k ? E : k , k = G < k ? G : k , k = I < k ? I : k , l = D > l ? D : l , l = F > l ? F : l , l = H > l ? H : l , m = E > m ? E : m , m = G > m ? G : m , m = I > m ? I : m } if ( p . x = j , p . y = k , p . width = l - j , p . height = m - k , c ) for ( a . worldTransform = f , e = 0 ; e < a . children . length ; e ++ ) a . children [ e ] . updateTransform ( ) ; if ( ! d ) { var J = a . getBounds ( ) ; p . x -= J . x , p . y -= J . y } return p } , b . DisplayObjectContainer . prototype . getLocalBounds = function ( ) { return this . getBounds ( this ) } , b . DisplayObjectContainer . prototype . contains = function ( a ) { return ! ! a && ( a === this || this . contains ( a . parent ) ) } , b . DisplayObjectContainer . prototype . _renderWebGL = function ( a ) { if ( this . visible && ! ( this . alpha <= 0 ) ) { if ( this . _cacheAsBitmap ) return void this . _renderCachedSprite ( a ) ; var b ; if ( this . _mask || this . _filters ) { for ( this . _filters && ( a . spriteBatch . flush ( ) , a . filterManager . pushFilter ( this . _filterBlock ) ) , this . _mask && ( a . spriteBatch . stop ( ) , a . maskManager . pushMask ( this . mask , a ) , a . spriteBatch . start ( ) ) , b = 0 ; b < this . children . length ; b ++ ) this . children [ b ] . _renderWebGL ( a ) ; a . spriteBatch . stop ( ) , this . _mask && a . maskManager . popMask ( this . _mask , a ) , this . _filters && a . filterManager . popFilter ( ) , a . spriteBatch . start ( ) } else for ( b = 0 ; b < this . children . length ; b ++ ) this . children [ b ] . _renderWebGL ( a ) } } , b . DisplayObjectContainer . prototype . _renderCanvas = function ( a ) { if ( this . visible !== ! 1 && 0 !== this . alpha ) { if ( this . _cacheAsBitmap ) return void this . _renderCachedSprite ( a ) ; this . _mask && a . maskManager . pushMask ( this . _mask , a ) ; for ( var b = 0 ; b < this . children . length ; b ++ ) this . children [ b ] . _renderCanvas ( a ) ; this . _mask && a . maskManager . popMask ( a ) } } , Object . defineProperty ( b . DisplayObjectContainer . prototype , "width" , { get : function ( ) { return this . getLocalBounds ( ) . width * this . scale . x } , set : function ( a ) { var b = this . getLocalBounds ( ) . width ; 0 !== b ? this . scale . x = a / b : this . scale . x = 1 , this . _width = a } } ) , Object . defineProperty ( b . DisplayObjectContainer . prototype , "height" , { get : function ( ) { return this . getLocalBounds ( ) . height * this . scale . y } , set : function ( a ) { var b = this . getLocalBounds ( ) . height ; 0 !== b ? this . scale . y = a / b : this . scale . y = 1 , this . _height = a } } ) , b . Sprite = function ( a ) { b . DisplayObjectContainer . call ( this ) , this . anchor = new b . Point , this . texture = a || b . Texture . emptyTexture , this . _width = 0 , this . _height = 0 , this . tint = 16777215 , this . cachedTint = - 1 , this . tintedTexture = null , this . blendMode = b . blendModes . NORMAL , this . shader = null , this . exists = ! 0 , this . texture . baseTexture . hasLoaded && this . onTextureUpdate ( ) , this . renderable = ! 0 } , b . Sprite . prototype = Object . create ( b . DisplayObjectContainer . prototype ) , b . Sprite . prototype . constructor = b . Sprite , Object . defineProperty ( b . Sprite . prototype , "width" , { get : function ( ) { return this . scale . x * this . texture . frame . width } , set : function ( a ) { this . scale . x = a / this . texture . frame . width , this . _width = a } } ) , Object . defineProperty ( b . Sprite . prototype , "height" , { get : function ( ) { return this . scale . y * this . texture . frame . height } , set : function ( a ) { this . scale . y = a / this . texture . frame . height , this . _height = a } } ) , b . Sprite . prototype . setTexture = function ( a , b ) { void 0 !== b && this . texture . baseTexture . destroy ( ) , this . texture . baseTexture . skipRender = ! 1 , this . texture = a , this . texture . valid = ! 0 , this . cachedTint = - 1 } , b . Sprite . prototype . onTextureUpdate = function ( ) { this . _width && ( this . scale . x = this . _width / this . texture . frame . width ) , this . _height && ( this . scale . y = this . _height / this . texture . frame . height ) } , b . Sprite . prototype . getBounds = func
d . shaderManager . setShader ( e ) , f . uniformMatrix3fv ( e . translationMatrix , ! 1 , a . worldTransform . toArray ( ! 0 ) ) , f . uniform1f ( e . flipY , d . flipY ) , f . uniform2f ( e . projectionVector , g . x , - g . y ) , f . uniform2f ( e . offsetVector , - h . x , - h . y ) , f . uniform3fv ( e . tintColor , b . hex2rgb ( a . tint ) ) , f . uniform1f ( e . alpha , a . worldAlpha ) , f . bindBuffer ( f . ARRAY _BUFFER , c . buffer ) , f . vertexAttribPointer ( e . aVertexPosition , 2 , f . FLOAT , ! 1 , 24 , 0 ) , f . vertexAttribPointer ( e . colorAttribute , 4 , f . FLOAT , ! 1 , 24 , 8 ) , f . bindBuffer ( f . ELEMENT _ARRAY _BUFFER , c . indexBuffer ) ) } , b . WebGLStencilManager . prototype . popStencil = function ( a , b , c ) { var d = this . gl ; if ( this . stencilStack . pop ( ) , this . count -- , 0 === this . stencilStack . length ) d . disable ( d . STENCIL _TEST ) ; else { var e = this . count ; this . bindGraphics ( a , b , c ) , d . colorMask ( ! 1 , ! 1 , ! 1 , ! 1 ) , 1 === b . mode ? ( this . reverse = ! this . reverse , this . reverse ? ( d . stencilFunc ( d . EQUAL , 255 - ( e + 1 ) , 255 ) , d . stencilOp ( d . KEEP , d . KEEP , d . INCR ) ) : ( d . stencilFunc ( d . EQUAL , e + 1 , 255 ) , d . stencilOp ( d . KEEP , d . KEEP , d . DECR ) ) , d . drawElements ( d . TRIANGLE _FAN , 4 , d . UNSIGNED _SHORT , 2 * ( b . indices . length - 4 ) ) , d . stencilFunc ( d . ALWAYS , 0 , 255 ) , d . stencilOp ( d . KEEP , d . KEEP , d . INVERT ) , d . drawElements ( d . TRIANGLE _FAN , b . indices . length - 4 , d . UNSIGNED _SHORT , 0 ) , this . reverse ? d . stencilFunc ( d . EQUAL , e , 255 ) : d . stencilFunc ( d . EQUAL , 255 - e , 255 ) ) : ( this . reverse ? ( d . stencilFunc ( d . EQUAL , e + 1 , 255 ) , d . stencilOp ( d . KEEP , d . KEEP , d . DECR ) ) : ( d . stencilFunc ( d . EQUAL , 255 - ( e + 1 ) , 255 ) , d . stencilOp ( d . KEEP , d . KEEP , d . INCR ) ) , d . drawElements ( d . TRIANGLE _STRIP , b . indices . length , d . UNSIGNED _SHORT , 0 ) , this . reverse ? d . stencilFunc ( d . EQUAL , e , 255 ) : d . stencilFunc ( d . EQUAL , 255 - e , 255 ) ) , d . colorMask ( ! 0 , ! 0 , ! 0 , ! 0 ) , d . stencilOp ( d . KEEP , d . KEEP , d . KEEP ) } } , b . WebGLStencilManager . prototype . destroy = function ( ) { this . stencilStack = null , this . gl = null } , b . WebGLShaderManager = function ( ) { this . maxAttibs = 10 , this . attribState = [ ] , this . tempAttribState = [ ] ; for ( var a = 0 ; a < this . maxAttibs ; a ++ ) this . attribState [ a ] = ! 1 ; this . stack = [ ] } , b . WebGLShaderManager . prototype . constructor = b . WebGLShaderManager , b . WebGLShaderManager . prototype . setContext = function ( a ) { this . gl = a , this . primitiveShader = new b . PrimitiveShader ( a ) , this . complexPrimitiveShader = new b . ComplexPrimitiveShader ( a ) , this . defaultShader = new b . PixiShader ( a ) , this . fastShader = new b . PixiFastShader ( a ) , this . stripShader = new b . StripShader ( a ) , this . setShader ( this . defaultShader ) } , b . WebGLShaderManager . prototype . setAttribs = function ( a ) { var b ; for ( b = 0 ; b < this . tempAttribState . length ; b ++ ) this . tempAttribState [ b ] = ! 1 ; for ( b = 0 ; b < a . length ; b ++ ) { var c = a [ b ] ; this . tempAttribState [ c ] = ! 0 } var d = this . gl ; for ( b = 0 ; b < this . attribState . length ; b ++ ) this . attribState [ b ] !== this . tempAttribState [ b ] && ( this . attribState [ b ] = this . tempAttribState [ b ] , this . tempAttribState [ b ] ? d . enableVertexAttribArray ( b ) : d . disableVertexAttribArray ( b ) ) } , b . WebGLShaderManager . prototype . setShader = function ( a ) { return this . _currentId !== a . _UID && ( this . _currentId = a . _UID , this . currentShader = a , this . gl . useProgram ( a . program ) , this . setAttribs ( a . attributes ) , ! 0 ) } , b . WebGLShaderManager . prototype . destroy = function ( ) { this . attribState = null , this . tempAttribState = null , this . primitiveShader . destroy ( ) , this . complexPrimitiveShader . destroy ( ) , this . defaultShader . destroy ( ) , this . fastShader . destroy ( ) , this . stripShader . destroy ( ) , this . gl = null } , b . WebGLSpriteBatch = function ( ) { this . vertSize = 5 , this . size = 2e3 ; var a = 4 * this . size * 4 * this . vertSize , c = 6 * this . size ; this . vertices = new b . ArrayBuffer ( a ) , this . positions = new b . Float32Array ( this . vertices ) , this . colors = new b . Uint32Array ( this . vertices ) , this . indices = new b . Uint16Array ( c ) , this . lastIndexCount = 0 ; for ( var d = 0 , e = 0 ; d < c ; d += 6 , e += 4 ) this . indices [ d + 0 ] = e + 0 , this . indices [ d + 1 ] = e + 1 , this . indices [ d + 2 ] = e + 2 , this . indices [ d + 3 ] = e + 0 , this . indices [ d + 4 ] = e + 2 , this . indices [ d + 5 ] = e + 3 ; this . drawing = ! 1 , this . currentBatchSize = 0 , this . currentBaseTexture = null , this . dirty = ! 0 , this . textures = [ ] , this . blendModes = [ ] , this . shaders = [ ] , this . sprites = [ ] , this . defaultShader = new b . AbstractFilter ( [ "precision lowp float;" , "varying vec2 vTextureCoord;" , "varying vec4 vColor;" , "uniform sampler2D uSampler;" , "void main(void) {" , " gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;" , "}" ] ) } , b . WebGLSpriteBatch . prototype . setContext = function ( a ) { this . gl = a , this . vertexBuffer = a . createBuffer ( ) , this . indexBuffer = a . createBuffer ( ) , a . bindBuffer ( a . ELEMENT _ARRA
this . baseTexture . _glTextures [ g . id ] = this . textureBuffer . texture , this . render = this . renderWebGL , this . projection = new b . Point ( . 5 * this . width , . 5 * - this . height ) } else this . render = this . renderCanvas , this . textureBuffer = new b . CanvasBuffer ( this . width * this . resolution , this . height * this . resolution ) , this . baseTexture . source = this . textureBuffer . canvas ; this . valid = ! 0 , this . tempMatrix = new Phaser . Matrix , this . _updateUvs ( ) } , b . RenderTexture . prototype = Object . create ( b . Texture . prototype ) , b . RenderTexture . prototype . constructor = b . RenderTexture , b . RenderTexture . prototype . resize = function ( a , c , d ) { a === this . width && c === this . height || ( this . valid = a > 0 && c > 0 , this . width = a , this . height = c , this . frame . width = this . crop . width = a * this . resolution , this . frame . height = this . crop . height = c * this . resolution , d && ( this . baseTexture . width = this . width * this . resolution , this . baseTexture . height = this . height * this . resolution ) , this . renderer . type === b . WEBGL _RENDERER && ( this . projection . x = this . width / 2 , this . projection . y = - this . height / 2 ) , this . valid && this . textureBuffer . resize ( this . width , this . height ) ) } , b . RenderTexture . prototype . clear = function ( ) { this . valid && ( this . renderer . type === b . WEBGL _RENDERER && this . renderer . gl . bindFramebuffer ( this . renderer . gl . FRAMEBUFFER , this . textureBuffer . frameBuffer ) , this . textureBuffer . clear ( ) ) } , b . RenderTexture . prototype . renderWebGL = function ( a , b , c ) { if ( this . valid && 0 !== a . alpha ) { var d = a . worldTransform ; d . identity ( ) , d . translate ( 0 , 2 * this . projection . y ) , b && d . append ( b ) , d . scale ( 1 , - 1 ) ; for ( var e = 0 ; e < a . children . length ; e ++ ) a . children [ e ] . updateTransform ( ) ; var f = this . renderer . gl ; f . viewport ( 0 , 0 , this . width * this . resolution , this . height * this . resolution ) , f . bindFramebuffer ( f . FRAMEBUFFER , this . textureBuffer . frameBuffer ) , c && this . textureBuffer . clear ( ) , this . renderer . spriteBatch . dirty = ! 0 , this . renderer . renderDisplayObject ( a , this . projection , this . textureBuffer . frameBuffer , b ) , this . renderer . spriteBatch . dirty = ! 0 } } , b . RenderTexture . prototype . renderCanvas = function ( a , b , c ) { if ( this . valid && 0 !== a . alpha ) { var d = a . worldTransform ; d . identity ( ) , b && d . append ( b ) ; for ( var e = 0 ; e < a . children . length ; e ++ ) a . children [ e ] . updateTransform ( ) ; c && this . textureBuffer . clear ( ) ; var f = this . renderer . resolution ; this . renderer . resolution = this . resolution , this . renderer . renderDisplayObject ( a , this . textureBuffer . context , b ) , this . renderer . resolution = f } } , b . RenderTexture . prototype . getImage = function ( ) { var a = new Image ; return a . src = this . getBase64 ( ) , a } , b . RenderTexture . prototype . getBase64 = function ( ) { return this . getCanvas ( ) . toDataURL ( ) } , b . RenderTexture . prototype . getCanvas = function ( ) { if ( this . renderer . type === b . WEBGL _RENDERER ) { var a = this . renderer . gl , c = this . textureBuffer . width , d = this . textureBuffer . height , e = new Uint8Array ( 4 * c * d ) ; a . bindFramebuffer ( a . FRAMEBUFFER , this . textureBuffer . frameBuffer ) , a . readPixels ( 0 , 0 , c , d , a . RGBA , a . UNSIGNED _BYTE , e ) , a . bindFramebuffer ( a . FRAMEBUFFER , null ) ; var f = new b . CanvasBuffer ( c , d ) , g = f . context . getImageData ( 0 , 0 , c , d ) ; return g . data . set ( e ) , f . context . putImageData ( g , 0 , 0 ) , f . canvas } return this . textureBuffer . canvas } , b . AbstractFilter = function ( a , b ) { this . passes = [ this ] , this . shaders = [ ] , this . dirty = ! 0 , this . padding = 0 , this . uniforms = b || { } , this . fragmentSrc = a || [ ] } , b . AbstractFilter . prototype . constructor = b . AbstractFilter , b . AbstractFilter . prototype . syncUniforms = function ( ) { for ( var a = 0 , b = this . shaders . length ; a < b ; a ++ ) this . shaders [ a ] . dirty = ! 0 } , b . Strip = function ( a ) { b . DisplayObjectContainer . call ( this ) , this . texture = a , this . uvs = new b . Float32Array ( [ 0 , 1 , 1 , 1 , 1 , 0 , 0 , 1 ] ) , this . vertices = new b . Float32Array ( [ 0 , 0 , 100 , 0 , 100 , 100 , 0 , 100 ] ) , this . colors = new b . Float32Array ( [ 1 , 1 , 1 , 1 ] ) , this . indices = new b . Uint16Array ( [ 0 , 1 , 2 , 3 ] ) , this . dirty = ! 0 , this . blendMode = b . blendModes . NORMAL , this . canvasPadding = 0 , this . drawMode = b . Strip . DrawModes . TRIANGLE _STRIP } , b . Strip . prototype = Object . create ( b . DisplayObjectContainer . prototype ) , b . Strip . prototype . constructor = b . Strip , b . Strip . prototype . _renderWebGL = function ( a ) { ! this . visible || this . alpha <= 0 || ( a . spriteBatch . stop ( ) , this . _vertexBuffer || this . _initWebGL ( a ) , a . shaderManager . setShader ( a . shaderManager . stripShader ) , this . _renderStrip ( a ) , a . spriteBatch . start ( ) ) } , b . Strip . prototype . _initWebGL = function ( a ) { var b = a . gl ; this . _vertexBuffer = b . createBuffer ( ) , this . _indexBuffer = b . createBuffer ( ) , this . _uvBuffer = b . createBuff
this . c *= a , this . b *= b , this . tx *= a , this . ty *= b , this } , rotate : function ( a ) { var b = Math . cos ( a ) , c = Math . sin ( a ) , d = this . a , e = this . c , f = this . tx ; return this . a = d * b - this . b * c , this . b = d * c + this . b * b , this . c = e * b - this . d * c , this . d = e * c + this . d * b , this . tx = f * b - this . ty * c , this . ty = f * c + this . ty * b , this } , append : function ( a ) { var b = this . a , c = this . b , d = this . c , e = this . d ; return this . a = a . a * b + a . b * d , this . b = a . a * c + a . b * e , this . c = a . c * b + a . d * d , this . d = a . c * c + a . d * e , this . tx = a . tx * b + a . ty * d + this . tx , this . ty = a . tx * c + a . ty * e + this . ty , this } , identity : function ( ) { return this . setTo ( 1 , 0 , 0 , 1 , 0 , 0 ) } } , c . identityMatrix = new c . Matrix , PIXI . Matrix = c . Matrix , PIXI . identityMatrix = c . identityMatrix , c . Point = function ( a , b ) { a = a || 0 , b = b || 0 , this . x = a , this . y = b , this . type = c . POINT } , c . Point . prototype = { copyFrom : function ( a ) { return this . setTo ( a . x , a . y ) } , invert : function ( ) { return this . setTo ( this . y , this . x ) } , setTo : function ( a , b ) { return this . x = a || 0 , this . y = b || ( 0 !== b ? this . x : 0 ) , this } , set : function ( a , b ) { return this . x = a || 0 , this . y = b || ( 0 !== b ? this . x : 0 ) , this } , add : function ( a , b ) { return this . x += a , this . y += b , this } , subtract : function ( a , b ) { return this . x -= a , this . y -= b , this } , multiply : function ( a , b ) { return this . x *= a , this . y *= b , this } , divide : function ( a , b ) { return this . x /= a , this . y /= b , this } , clampX : function ( a , b ) { return this . x = c . Math . clamp ( this . x , a , b ) , this } , clampY : function ( a , b ) { return this . y = c . Math . clamp ( this . y , a , b ) , this } , clamp : function ( a , b ) { return this . x = c . Math . clamp ( this . x , a , b ) , this . y = c . Math . clamp ( this . y , a , b ) , this } , clone : function ( a ) { return void 0 === a || null === a ? a = new c . Point ( this . x , this . y ) : a . setTo ( this . x , this . y ) , a } , copyTo : function ( a ) { return a . x = this . x , a . y = this . y , a } , distance : function ( a , b ) { return c . Point . distance ( this , a , b ) } , equals : function ( a ) { return a . x === this . x && a . y === this . y } , angle : function ( a , b ) { return void 0 === b && ( b = ! 1 ) , b ? c . Math . radToDeg ( Math . atan2 ( a . y - this . y , a . x - this . x ) ) : Math . atan2 ( a . y - this . y , a . x - this . x ) } , rotate : function ( a , b , d , e , f ) { return c . Point . rotate ( this , a , b , d , e , f ) } , getMagnitude : function ( ) { return Math . sqrt ( this . x * this . x + this . y * this . y ) } , getMagnitudeSq : function ( ) { return this . x * this . x + this . y * this . y } , setMagnitude : function ( a ) { return this . normalize ( ) . multiply ( a , a ) } , normalize : function ( ) { if ( ! this . isZero ( ) ) { var a = this . getMagnitude ( ) ; this . x /= a , this . y /= a } return this } , isZero : function ( ) { return 0 === this . x && 0 === this . y } , dot : function ( a ) { return this . x * a . x + this . y * a . y } , cross : function ( a ) { return this . x * a . y - this . y * a . x } , perp : function ( ) { return this . setTo ( - this . y , this . x ) } , rperp : function ( ) { return this . setTo ( this . y , - this . x ) } , normalRightHand : function ( ) { return this . setTo ( this . y * - 1 , this . x ) } , floor : function ( ) { return this . setTo ( Math . floor ( this . x ) , Math . floor ( this . y ) ) } , ceil : function ( ) { return this . setTo ( Math . ceil ( this . x ) , Math . ceil ( this . y ) ) } , toString : function ( ) { return "[{Point (x=" + this . x + " y=" + this . y + ")}]" } } , c . Point . prototype . constructor = c . Point , c . Point . add = function ( a , b , d ) { return void 0 === d && ( d = new c . Point ) , d . x = a . x + b . x , d . y = a . y + b . y , d } , c . Point . subtract = function ( a , b , d ) { return void 0 === d && ( d = new c . Point ) , d . x = a . x - b . x , d . y = a . y - b . y , d } , c . Point . multiply = function ( a , b , d ) { return void 0 === d && ( d = new c . Point ) , d . x = a . x * b . x , d . y = a . y * b . y , d } , c . Point . divide = function ( a , b , d ) { return void 0 === d && ( d = new c . Point ) , d . x = a . x / b . x , d . y = a . y / b . y , d } , c . Point . equals = function ( a , b ) { return a . x === b . x && a . y === b . y } , c . Point . angle = function ( a , b ) { return Math . atan2 ( a . y - b . y , a . x - b . x ) } , c . Point . negative = function ( a , b ) { return void 0 === b && ( b = new c . Point ) , b . setTo ( - a . x , - a . y ) } , c . Point . multiplyAdd = function ( a , b , d , e ) { return void 0 === e && ( e = new c . Point ) , e . setTo ( a . x + b . x * d , a . y + b . y * d ) } , c . Point . interpolate = function ( a , b , d , e ) { return void 0 === e && ( e = new c . Point ) , e . setTo ( a . x + ( b . x - a . x ) * d , a . y + ( b . y - a . y ) * d ) } , c . Point . perp = function ( a , b ) { return void 0 === b && ( b = new c . Point ) , b . setTo ( - a . y , a . x ) } , c . Point . rperp = function ( a , b ) { return void 0 === b && ( b = new c . Point ) , b . setTo ( a . y , - a . x ) } , c . Point . distance = function ( a , b , d ) { var e = c . Math . distance ( a . x , a . y , b . x , b . y ) ; return d ? Math . round ( e ) : e } , c . Point . project = function ( a , b , d ) { void 0 === d && ( d = new c . Point ) ; var e = a . dot ( b ) / b . getMagnitudeSq ( ) ; return 0 !== e && d . setTo ( e * b . x , e * b . y ) , d } , c . Point . projectUnit = function ( a , b , d ) { void 0 === d && ( d = new c . Point ) ; var e = a . dot ( b ) ; return 0 !== e && d . setTo ( e * b . x , e * b . y ) , d } , c . Point . normalRightHand = function ( a , b ) { return void 0 === b && ( b = new c . Poi
var c = this . _indexOfListener ( a , b ) ; return c !== - 1 && ( this . _bindings [ c ] . _destroy ( ) , this . _bindings . splice ( c , 1 ) ) , a } , removeAll : function ( a ) { if ( void 0 === a && ( a = null ) , this . _bindings ) { for ( var b = this . _bindings . length ; b -- ; ) a ? this . _bindings [ b ] . context === a && ( this . _bindings [ b ] . _destroy ( ) , this . _bindings . splice ( b , 1 ) ) : this . _bindings [ b ] . _destroy ( ) ; a || ( this . _bindings . length = 0 ) } } , getNumListeners : function ( ) { return this . _bindings ? this . _bindings . length : 0 } , halt : function ( ) { this . _shouldPropagate = ! 1 } , dispatch : function ( ) { if ( this . active && this . _bindings ) { var a , b = Array . prototype . slice . call ( arguments ) , c = this . _bindings . length ; if ( this . memorize && ( this . _prevParams = b ) , c ) { a = this . _bindings . slice ( ) , this . _shouldPropagate = ! 0 ; do c -- ; while ( a [ c ] && this . _shouldPropagate && a [ c ] . execute ( b ) !== ! 1 ) } } } , forget : function ( ) { this . _prevParams && ( 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 , f ) { this . _listener = b , c && ( this . _isOnce = ! 0 ) , null != d && ( this . context = d ) , this . _signal = a , e && ( this . _priority = e ) , f && f . length && ( this . _args = f ) } , c . SignalBinding . prototype = { context : null , _isOnce : ! 1 , _priority : 0 , _args : null , 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 , this . _args && ( c = c . concat ( this . _args ) ) , 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 ( ) } , addToWorld : function ( a , b , c , d , e , f ) { void 0 === e && ( e = 0 ) , void 0 === f && ( f = 0 ) , void 0 !== c && null !== c ? this . width = c : c = this . width , void 0 !== d && null !== d ? this . height = d : d = this . height ; var g = this . game . add . image ( a , b , "__default" ) ; return g . width = c , g . height = d , g . anchor . set ( e , f ) , g . filters = [ this ] , g } , 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
void 0 !== a . preserveDrawingBuffer && ( this . preserveDrawingBuffer = a . preserveDrawingBuffer ) , a . physicsConfig && ( this . physicsConfig = a . physicsConfig ) ; var b = [ ( Date . now ( ) * Math . random ( ) ) . toString ( ) ] ; a . seed && ( b = a . seed ) , this . rnd = new c . RandomDataGenerator ( b ) ; var d = null ; a . state && ( d = a . state ) , this . state = new c . StateManager ( this , d ) } , boot : function ( ) { this . isBooted || ( this . onPause = new c . Signal , this . onResume = new c . Signal , this . onBlur = new c . Signal , this . onFocus = new c . Signal , this . isBooted = ! 0 , PIXI . game = this , this . math = c . Math , this . scale = new c . ScaleManager ( this , this . _width , this . _height ) , this . stage = new c . Stage ( this ) , this . setUpRenderer ( ) , this . world = new c . World ( this ) , this . add = new c . GameObjectFactory ( this ) , this . make = new c . GameObjectCreator ( this ) , this . cache = new c . Cache ( this ) , this . load = new c . Loader ( this ) , this . time = new c . Time ( this ) , this . tweens = new c . TweenManager ( this ) , this . input = new c . Input ( this ) , this . sound = new c . SoundManager ( this ) , this . physics = new c . Physics ( this , this . physicsConfig ) , this . particles = new c . Particles ( this ) , this . create = new c . Create ( this ) , this . plugins = new c . PluginManager ( this ) , this . net = new c . Net ( this ) , this . time . boot ( ) , this . stage . boot ( ) , this . world . boot ( ) , this . scale . boot ( ) , this . input . boot ( ) , this . sound . boot ( ) , this . state . boot ( ) , this . config . enableDebug ? ( this . debug = new c . Utils . Debug ( this ) , this . debug . boot ( ) ) : this . debug = { preUpdate : function ( ) { } , update : function ( ) { } , reset : function ( ) { } } , this . showDebugHeader ( ) , this . isRunning = ! 0 , this . config && this . config . forceSetTimeOut ? this . raf = new c . RequestAnimationFrame ( this , this . config . forceSetTimeOut ) : this . raf = new c . RequestAnimationFrame ( this , ( ! 1 ) ) , this . _kickstart = ! 0 , window . focus && ( ! window . PhaserGlobal || window . PhaserGlobal && ! window . PhaserGlobal . stopFocus ) && window . focus ( ) , this . raf . start ( ) ) } , showDebugHeader : function ( ) { if ( ! window . PhaserGlobal || ! window . PhaserGlobal . hideBanner ) { var a = c . VERSION , b = "Canvas" , d = "HTML Audio" , e = 1 ; if ( this . renderType === c . WEBGL ? ( b = "WebGL" , e ++ ) : this . renderType === c . HEADLESS && ( b = "Headless" ) , this . device . webAudio && ( d = "WebAudio" , e ++ ) , this . device . chrome ) { for ( var f = [ "%c %c %c Phaser v" + a + " | Pixi.js | " + b + " | " + d + " %c %c %c http://phaser.io %c♥%c♥%c♥" , "background: #fb8cb3" , "background: #d44a52" , "color: #ffffff; background: #871905;" , "background: #d44a52" , "background: #fb8cb3" , "background: #ffffff" ] , g = 0 ; g < 3 ; g ++ ) g < e ? f . push ( "color: #ff2424; background: #fff" ) : f . push ( "color: #959595; background: #fff" ) ; console . log . apply ( console , f ) } else window . console && console . log ( "Phaser v" + a + " | Pixi.js " + PIXI . VERSION + " | " + b + " | " + d + " | http://phaser.io" ) } } , setUpRenderer : function ( ) { if ( this . config . canvas ? this . canvas = this . config . canvas : this . canvas = c . Canvas . create ( this , this . width , this . height , this . config . canvasID , ! 0 ) , this . config . canvasStyle ? this . canvas . style = this . config . canvasStyle : this . canvas . style [ "-webkit-full-screen" ] = "width: 100%; height: 100%" , this . renderType === c . HEADLESS || this . renderType === c . CANVAS || this . renderType === c . AUTO && ! this . device . webGL ) { if ( ! this . device . canvas ) throw new Error ( "Phaser.Game - Cannot create Canvas or WebGL context, aborting." ) ; this . renderType = c . CANVAS , this . renderer = new PIXI . CanvasRenderer ( this ) , this . context = this . renderer . context } else this . renderType = c . WEBGL , this . renderer = new PIXI . WebGLRenderer ( this ) , this . context = null , this . canvas . addEventListener ( "webglcontextlost" , this . contextLost . bind ( this ) , ! 1 ) , this . canvas . addEventListener ( "webglcontextrestored" , this . contextRestored . bind ( this ) , ! 1 ) ; this . device . cocoonJS && ( this . canvas . screencanvas = this . renderType === c . CANVAS ) , this . renderType !== c . HEADLESS && ( this . stage . smoothed = this . antialias , c . Canvas . addToDOM ( this . canvas , this . parent , ! 1 ) , c . Canvas . setTouchAction ( this . canvas ) ) } , contextLost : function ( a ) { a . preventDefault ( ) , this . renderer . contextLost = ! 0 } , contextRestored : function ( ) { this . renderer . initContext ( ) , this . cache . clearGLTextures ( ) , this . renderer . contextLost = ! 1 } , update : function ( a ) { if ( this . time . update ( a ) , this . _kickstart ) return this . updateLogic ( this . time . desiredFpsMult ) , this . updateRender ( this . time . slowMotion * this . time . desiredFps ) , void ( this . _kickstart = ! 1 ) ; if ( this . _spiraling > 1 && ! this . forceSingleUpdate ) this . time . time > this . _nextFpsNotification && ( this . _nextFpsNotification = this . time . t
this . _holdSent = ! 0 ) , a . recordPointerHistory && this . game . time . time >= this . _nextDrop && ( this . _nextDrop = this . game . time . time + a . recordRate , this . _history . push ( { x : this . position . x , y : this . position . y } ) , this . _history . length > a . recordLimit && this . _history . shift ( ) ) ) } , move : function ( a , b ) { var d = this . game . input ; if ( ! d . pollLocked ) { if ( void 0 === b && ( b = ! 1 ) , void 0 !== a . button && ( this . button = a . button ) , b && this . isMouse && this . updateButtons ( a ) , this . clientX = a . clientX , this . clientY = a . clientY , this . pageX = a . pageX , this . pageY = a . pageY , this . screenX = a . screenX , this . screenY = a . screenY , this . isMouse && d . mouse . locked && ! b && ( this . rawMovementX = a . movementX || a . mozMovementX || a . webkitMovementX || 0 , this . rawMovementY = a . movementY || a . mozMovementY || a . webkitMovementY || 0 , this . movementX += this . rawMovementX , this . movementY += this . rawMovementY ) , this . x = ( this . pageX - this . game . scale . offset . x ) * d . scale . x , this . y = ( this . pageY - this . game . scale . offset . y ) * d . scale . y , this . position . setTo ( this . x , this . y ) , this . circle . x = this . x , this . circle . y = this . y , ( d . multiInputOverride === c . Input . MOUSE _OVERRIDES _TOUCH || d . multiInputOverride === c . Input . MOUSE _TOUCH _COMBINE || d . multiInputOverride === c . Input . TOUCH _OVERRIDES _MOUSE && 0 === d . totalActivePointers ) && ( d . activePointer = this , d . x = this . x , d . y = this . y , d . position . setTo ( d . x , d . y ) , d . circle . x = d . x , d . circle . y = d . y ) , this . withinGame = this . game . scale . bounds . contains ( this . pageX , this . pageY ) , this . game . paused ) return this ; for ( var e = d . moveCallbacks . length ; e -- ; ) d . moveCallbacks [ e ] . callback . call ( d . moveCallbacks [ e ] . context , this , this . x , this . y , b ) ; return null !== this . targetObject && this . targetObject . isDragged === ! 0 ? this . targetObject . update ( this ) === ! 1 && ( this . targetObject = null ) : d . interactiveItems . total > 0 && this . processInteractiveObjects ( b ) , this } } , processInteractiveObjects : function ( a ) { var b = 0 , c = - 1 , d = null , e = this . game . input . interactiveItems . first ; for ( this . interactiveCandidates = [ ] ; e ; ) e . checked = ! 1 , e . validForInput ( c , b , ! 1 ) && ( e . checked = ! 0 , ( a && e . checkPointerDown ( this , ! 0 ) || ! a && e . checkPointerOver ( this , ! 0 ) ) && ( b = e . sprite . renderOrderID , c = e . priorityID , d = e , this . interactiveCandidates . push ( e ) ) ) , e = this . game . input . interactiveItems . next ; for ( e = this . game . input . interactiveItems . first ; e ; ) ! e . checked && e . validForInput ( c , b , ! 0 ) && ( a && e . checkPointerDown ( this , ! 1 ) || ! a && e . checkPointerOver ( this , ! 1 ) ) && ( b = e . sprite . renderOrderID , c = e . priorityID , d = e , this . interactiveCandidates . push ( e ) ) , e = this . game . input . interactiveItems . next ; return this . game . input . customCandidateHandler && ( d = this . game . input . customCandidateHandler . call ( this . game . input . customCandidateHandlerContext , this , this . interactiveCandidates , d ) ) , this . swapTarget ( d , ! 1 ) , null !== this . targetObject } , swapTarget : function ( a , b ) { void 0 === b && ( b = ! 1 ) , null === a ? this . targetObject && ( this . targetObject . _pointerOutHandler ( this , b ) , this . targetObject = null ) : null === this . targetObject ? ( this . targetObject = a , a . _pointerOverHandler ( this , b ) ) : this . targetObject === a ? a . update ( this ) === ! 1 && ( this . targetObject = null ) : ( this . targetObject . _pointerOutHandler ( this , b ) , this . targetObject = a , this . targetObject . _pointerOverHandler ( this , b ) ) } , leave : function ( a ) { this . withinGame = ! 1 , this . move ( a , ! 1 ) } , stop : function ( a ) { var b = this . game . input ; return this . _stateReset && this . withinGame ? void a . preventDefault ( ) : ( this . timeUp = this . game . time . time , ( b . multiInputOverride === c . Input . MOUSE _OVERRIDES _TOUCH || b . multiInputOverride === c . Input . MOUSE _TOUCH _COMBINE || b . multiInputOverride === c . Input . TOUCH _OVERRIDES _MOUSE && 0 === b . totalActivePointers ) && ( b . onUp . dispatch ( this , a ) , this . duration >= 0 && this . duration <= b . tapRate && ( this . timeUp - this . previousTapTime < b . doubleTapRate ? b . onTap . dispatch ( this , ! 0 ) : b . onTap . dispatch ( this , ! 1 ) , this . previousTapTime = this . timeUp ) ) , this . isMouse ? this . updateButtons ( a ) : ( this . isDown = ! 1 , this . isUp = ! 0 ) , this . id > 0 && ( this . active = ! 1 ) , this . withinGame = this . game . scale . bounds . contains ( a . pageX , a . pageY ) , this . pointerId = null , this . identifier = null , this . positionUp . setTo ( this . x , this . y ) , this . isMouse === ! 1 && b . currentPointers -- , b . interactiveItems . callAll ( "_releasedHandler" , this ) , this . _clickTrampolines && ( this . _trampolineTargetObject = this . targetObject ) , this . targetObject = null , this ) } , justPressed : function ( a ) { return a = a || this . game . input . justPressedRate , this . isDown === ! 0 && this . timeDown + a > this . game . time . time } , justRel
c . Gamepad . PS3XC _SQUARE = 2 ; c . Gamepad . PS3XC _TRIANGLE = 3 ; c . Gamepad . PS3XC _L1 = 4 , c . Gamepad . PS3XC _R1 = 5 , c . Gamepad . PS3XC _L2 = 6 , c . Gamepad . PS3XC _R2 = 7 , c . Gamepad . PS3XC _SELECT = 8 , c . Gamepad . PS3XC _START = 9 , c . Gamepad . PS3XC _STICK _LEFT _BUTTON = 10 , c . Gamepad . PS3XC _STICK _RIGHT _BUTTON = 11 , c . Gamepad . PS3XC _DPAD _UP = 12 , c . Gamepad . PS3XC _DPAD _DOWN = 13 , c . Gamepad . PS3XC _DPAD _LEFT = 14 , c . Gamepad . PS3XC _DPAD _RIGHT = 15 , c . Gamepad . PS3XC _STICK _LEFT _X = 0 , c . Gamepad . PS3XC _STICK _LEFT _Y = 1 , c . Gamepad . PS3XC _STICK _RIGHT _X = 2 , c . Gamepad . PS3XC _STICK _RIGHT _Y = 3 , c . SinglePad = function ( a , b ) { this . game = a , this . index = null , this . connected = ! 1 , this . callbackContext = this , this . onConnectCallback = null , this . onDisconnectCallback = null , this . onDownCallback = null , this . onUpCallback = null , this . onAxisCallback = null , this . onFloatCallback = null , this . deadZone = . 26 , this . _padParent = b , this . _rawPad = null , this . _prevTimestamp = null , this . _buttons = [ ] , this . _buttonsLen = 0 , this . _axes = [ ] , this . _axesLen = 0 } , c . SinglePad . prototype = { addCallbacks : function ( a , b ) { "undefined" != typeof b && ( this . onConnectCallback = "function" == typeof b . onConnect ? b . onConnect : this . onConnectCallback , this . onDisconnectCallback = "function" == typeof b . onDisconnect ? b . onDisconnect : this . onDisconnectCallback , this . onDownCallback = "function" == typeof b . onDown ? b . onDown : this . onDownCallback , this . onUpCallback = "function" == typeof b . onUp ? b . onUp : this . onUpCallback , this . onAxisCallback = "function" == typeof b . onAxis ? b . onAxis : this . onAxisCallback , this . onFloatCallback = "function" == typeof b . onFloat ? b . onFloat : this . onFloatCallback , this . callbackContext = a ) } , getButton : function ( a ) { return this . _buttons [ a ] ? this . _buttons [ a ] : null } , pollStatus : function ( ) { if ( this . connected && this . game . input . enabled && this . game . input . gamepad . enabled && ( ! this . _rawPad . timestamp || this . _rawPad . timestamp !== this . _prevTimestamp ) ) { for ( var a = 0 ; a < this . _buttonsLen ; a ++ ) { var b = isNaN ( this . _rawPad . buttons [ a ] ) ? this . _rawPad . buttons [ a ] . value : this . _rawPad . buttons [ a ] ; b !== this . _buttons [ a ] . value && ( 1 === b ? this . processButtonDown ( a , b ) : 0 === b ? this . processButtonUp ( a , b ) : this . processButtonFloat ( a , b ) ) } for ( var c = 0 ; c < this . _axesLen ; c ++ ) { var d = this . _rawPad . axes [ c ] ; d > 0 && d > this . deadZone || d < 0 && d < - this . deadZone ? this . processAxisChange ( c , d ) : this . processAxisChange ( c , 0 ) } this . _prevTimestamp = this . _rawPad . timestamp } } , connect : function ( a ) { var b = ! this . connected ; this . connected = ! 0 , this . index = a . index , this . _rawPad = a , this . _buttons = [ ] , this . _buttonsLen = a . buttons . length , this . _axes = [ ] , this . _axesLen = a . axes . length ; for ( var d = 0 ; d < this . _axesLen ; d ++ ) this . _axes [ d ] = a . axes [ d ] ; for ( var e in a . buttons ) e = parseInt ( e , 10 ) , this . _buttons [ e ] = new c . DeviceButton ( this , e ) ; b && this . _padParent . onConnectCallback && this . _padParent . onConnectCallback . call ( this . _padParent . callbackContext , this . index ) , b && this . onConnectCallback && this . onConnectCallback . call ( this . callbackContext ) } , disconnect : function ( ) { var a = this . connected , b = this . index ; this . connected = ! 1 , this . index = null , this . _rawPad = void 0 ; for ( var c = 0 ; c < this . _buttonsLen ; c ++ ) this . _buttons [ c ] . destroy ( ) ; this . _buttons = [ ] , this . _buttonsLen = 0 , this . _axes = [ ] , this . _axesLen = 0 , a && this . _padParent . onDisconnectCallback && this . _padParent . onDisconnectCallback . call ( this . _padParent . callbackContext , b ) , a && this . onDisconnectCallback && this . onDisconnectCallback . call ( this . callbackContext ) } , destroy : function ( ) { this . _rawPad = void 0 ; for ( var a = 0 ; a < this . _buttonsLen ; a ++ ) this . _buttons [ a ] . destroy ( ) ; this . _buttons = [ ] , this . _buttonsLen = 0 , this . _axes = [ ] , this . _axesLen = 0 , this . onConnectCallback = null , this . onDisconnectCallback = null , this . onDownCallback = null , this . onUpCallback = null , this . onAxisCallback = null , this . onFloatCallback = null } , processAxisChange : function ( a , b ) { this . _axes [ a ] !== b && ( this . _axes [ a ] = b , this . _padParent . onAxisCallback && this . _padParent . onAxisCallback . call ( this . _padParent . callbackContext , this , a , b ) , this . onAxisCallback && this . onAxisCallback . call ( this . callbackContext , this , a , b ) ) } , processButtonDown : function ( a , b ) { this . _buttons [ a ] && this . _buttons [ a ] . start ( null , b ) , this . _padParent . onDownCallback && this . _padParent . onDownCallback . call ( this . _padParent . callbackContext , a , b , this . index ) , this . onDownCallback && this . onDownCallback . call ( this . callbackContext , a , b ) } , processButtonUp : function ( a , b ) { this . _padParent . onUpCallback && this . _padParent . onUpCa
return void 0 === k && ( k = this . world ) , k . add ( new c . Button ( this . game , a , b , d , e , f , g , h , i , j ) ) } , graphics : function ( a , b , d ) { return void 0 === d && ( d = this . world ) , d . add ( new c . Graphics ( this . game , a , b ) ) } , emitter : function ( a , b , d ) { return this . game . particles . add ( new c . Particles . Arcade . Emitter ( this . game , a , b , d ) ) } , retroFont : function ( a , b , d , e , f , g , h , i , j ) { return new c . RetroFont ( this . game , a , b , d , e , f , g , h , i , j ) } , bitmapText : function ( a , b , d , e , f , g ) { return void 0 === g && ( g = this . world ) , g . add ( new c . BitmapText ( this . game , a , b , d , e , f ) ) } , tilemap : function ( a , b , d , e , f ) { return new c . Tilemap ( this . game , a , b , d , e , f ) } , renderTexture : function ( a , b , d , e ) { void 0 !== d && "" !== d || ( d = this . game . rnd . uuid ( ) ) , void 0 === e && ( e = ! 1 ) ; var f = new c . RenderTexture ( this . game , a , b , d ) ; return e && this . game . cache . addRenderTexture ( d , f ) , f } , video : function ( a , b ) { return new c . Video ( this . game , a , b ) } , bitmapData : function ( a , b , d , e ) { void 0 === e && ( e = ! 1 ) , void 0 !== d && "" !== d || ( d = this . game . rnd . uuid ( ) ) ; var f = new c . BitmapData ( this . game , d , a , b ) ; return e && this . game . cache . addBitmapData ( d , f ) , f } , filter : function ( a ) { var b = Array . prototype . slice . call ( arguments , 1 ) , a = new c . Filter [ a ] ( this . game ) ; return a . init . apply ( a , b ) , a } , plugin : function ( a ) { return this . game . plugins . add ( a ) } } , c . GameObjectFactory . prototype . constructor = c . GameObjectFactory , c . GameObjectCreator = function ( a ) { this . game = a , this . world = this . game . world } , c . GameObjectCreator . prototype = { image : function ( a , b , d , e ) { return new c . Image ( this . game , a , b , d , e ) } , sprite : function ( a , b , d , e ) { return new c . Sprite ( this . game , a , b , d , e ) } , tween : function ( a ) { return new c . Tween ( a , this . game , this . game . tweens ) } , group : function ( a , b , d , e , f ) { return new c . Group ( this . game , a , b , d , e , f ) } , spriteBatch : function ( a , b , d ) { return void 0 === b && ( b = "group" ) , void 0 === d && ( d = ! 1 ) , new c . SpriteBatch ( this . game , a , b , d ) } , audio : function ( a , b , c , d ) { return this . game . sound . add ( a , b , c , d ) } , audioSprite : function ( a ) { return this . game . sound . addSprite ( a ) } , sound : function ( a , b , c , d ) { return this . game . sound . add ( a , b , c , d ) } , tileSprite : function ( a , b , d , e , f , g ) { return new c . TileSprite ( this . game , a , b , d , e , f , g ) } , rope : function ( a , b , d , e , f ) { return new c . Rope ( this . game , a , b , d , e , f ) } , text : function ( a , b , d , e ) { return new c . Text ( this . game , a , b , d , e ) } , button : function ( a , b , d , e , f , g , h , i , j ) { return new c . Button ( this . game , a , b , d , e , f , g , h , i , j ) } , graphics : function ( a , b ) { return new c . Graphics ( this . game , a , b ) } , emitter : function ( a , b , d ) { return new c . Particles . Arcade . Emitter ( this . game , a , b , d ) } , retroFont : function ( a , b , d , e , f , g , h , i , j ) { return new c . RetroFont ( this . game , a , b , d , e , f , g , h , i , j ) } , bitmapText : function ( a , b , d , e , f , g ) { return new c . BitmapText ( this . game , a , b , d , e , f , g ) } , tilemap : function ( a , b , d , e , f ) { return new c . Tilemap ( this . game , a , b , d , e , f ) } , renderTexture : function ( a , b , d , e ) { void 0 !== d && "" !== d || ( d = this . game . rnd . uuid ( ) ) , void 0 === e && ( e = ! 1 ) ; var f = new c . RenderTexture ( this . game , a , b , d ) ; return e && this . game . cache . addRenderTexture ( d , f ) , f } , bitmapData : function ( a , b , d , e ) { void 0 === e && ( e = ! 1 ) , void 0 !== d && "" !== d || ( d = this . game . rnd . uuid ( ) ) ; var f = new c . BitmapData ( this . game , d , a , b ) ; return e && this . game . cache . addBitmapData ( d , f ) , f } , filter : function ( a ) { var b = Array . prototype . slice . call ( arguments , 1 ) , a = new c . Filter [ a ] ( this . game ) ; return a . init . apply ( a , b ) , a } } , c . GameObjectCreator . prototype . constructor = c . GameObjectCreator , c . Sprite = function ( a , b , d , e , f ) { b = b || 0 , d = d || 0 , e = e || null , f = f || null , this . type = c . SPRITE , this . physicsType = c . SPRITE , PIXI . Sprite . call ( this , c . Cache . DEFAULT ) , c . Component . Core . init . call ( this , a , b , d , e , f ) } , c . Sprite . prototype = Object . create ( PIXI . Sprite . prototype ) , c . Sprite . prototype . constructor = c . Sprite , c . Component . Core . install . call ( c . Sprite . prototype , [ "Angle" , "Animation" , "AutoCull" , "Bounds" , "BringToTop" , "Crop" , "Delta" , "Destroy" , "FixedToCamera" , "Health" , "InCamera" , "InputEnabled" , "InWorld" , "LifeSpan" , "LoadTexture" , "Overlap" , "PhysicsBody" , "Reset" , "ScaleMinMax" , "Smoothed" ] ) , c . Sprite . prototype . preUpdatePhysics = c . Component . PhysicsBody . preUpdate , c . Sprite . prototype . preUpdateLifeSpan = c . Component . LifeSpan . preUpdate , c . Sprite . prototype . preUpdateInWorld = c . Component . InWorld . preUpdate , c . Sprite . prototype . preUpdateCore = c . Component . Core . preUpdate , c . Sprite . prototype . preUpdate = function ( ) { return ! ! ( this . preUpdatePhysics ( ) && this . preUpdateLifeSpan ( ) && this . preUpdateInWorld ( ) ) && this . preUpdateCore ( ) } , c . Im
a . spriteBatch . start ( ) } } , PIXI . Graphics . prototype . _renderCanvas = function ( a ) { if ( this . visible !== ! 1 && 0 !== this . alpha && this . isMask !== ! 0 ) { if ( this . _prevTint !== this . tint && ( this . dirty = ! 0 , this . _prevTint = this . tint ) , this . _cacheAsBitmap ) return ( this . dirty || this . cachedSpriteDirty ) && ( this . _generateCachedSprite ( ) , this . updateCachedSpriteTexture ( ) , this . cachedSpriteDirty = ! 1 , this . dirty = ! 1 ) , this . _cachedSprite . alpha = this . alpha , void PIXI . Sprite . prototype . _renderCanvas . call ( this . _cachedSprite , a ) ; var b = a . context , c = this . worldTransform ; this . blendMode !== a . currentBlendMode && ( a . currentBlendMode = this . blendMode , b . globalCompositeOperation = PIXI . blendModesCanvas [ a . currentBlendMode ] ) , this . _mask && a . maskManager . pushMask ( this . _mask , a ) ; var d = a . resolution , e = c . tx * a . resolution + a . shakeX , f = c . ty * a . resolution + a . shakeY ; b . setTransform ( c . a * d , c . b * d , c . c * d , c . d * d , e , f ) , PIXI . CanvasGraphics . renderGraphics ( this , b ) ; for ( var g = 0 ; g < this . children . length ; g ++ ) this . children [ g ] . _renderCanvas ( a ) ; this . _mask && a . maskManager . popMask ( a ) } } , PIXI . Graphics . prototype . getBounds = function ( a ) { if ( ! this . _currentBounds ) { if ( ! this . renderable ) return PIXI . EmptyRectangle ; this . dirty && ( this . updateLocalBounds ( ) , this . webGLDirty = ! 0 , this . cachedSpriteDirty = ! 0 , this . dirty = ! 1 ) ; var b = this . _localBounds , c = b . x , d = b . width + b . x , e = b . y , f = b . height + b . y , g = a || this . worldTransform , h = g . a , i = g . b , j = g . c , k = g . d , l = g . tx , m = g . ty , n = h * d + j * f + l , o = k * f + i * d + m , p = h * c + j * f + l , q = k * f + i * c + m , r = h * c + j * e + l , s = k * e + i * c + m , t = h * d + j * e + l , u = k * e + i * d + m , v = n , w = o , x = n , y = o ; x = p < x ? p : x , x = r < x ? r : x , x = t < x ? t : x , y = q < y ? q : y , y = s < y ? s : y , y = u < y ? u : y , v = p > v ? p : v , v = r > v ? r : v , v = t > v ? t : v , w = q > w ? q : w , w = s > w ? s : w , w = u > w ? u : w , this . _bounds . x = x , this . _bounds . width = v - x , this . _bounds . y = y , this . _bounds . height = w - y , this . _currentBounds = this . _bounds } return this . _currentBounds } , PIXI . Graphics . prototype . getLocalBounds = function ( ) { var a = this . worldTransform ; this . worldTransform = PIXI . identityMatrix ; for ( var b = 0 ; b < this . children . length ; b ++ ) this . children [ b ] . updateTransform ( ) ; var c = this . getBounds ( ) ; for ( this . worldTransform = a , b = 0 ; b < this . children . length ; b ++ ) this . children [ b ] . updateTransform ( ) ; return c } , PIXI . Graphics . prototype . containsPoint = function ( a ) { this . worldTransform . applyInverse ( a , tempPoint ) ; for ( var b = this . graphicsData , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; if ( d . fill && d . shape && d . shape . contains ( tempPoint . x , tempPoint . y ) ) return ! 0 } return ! 1 } , PIXI . Graphics . prototype . updateLocalBounds = function ( ) { var a = 1 / 0 , b = - ( 1 / 0 ) , d = 1 / 0 , e = - ( 1 / 0 ) ; if ( this . graphicsData . length ) for ( var f , g , h , i , j , k , l = 0 ; l < this . graphicsData . length ; l ++ ) { var m = this . graphicsData [ l ] , n = m . type , o = m . lineWidth ; if ( f = m . shape , n === PIXI . Graphics . RECT || n === PIXI . Graphics . RREC ) h = f . x - o / 2 , i = f . y - o / 2 , j = f . width + o , k = f . height + o , a = h < a ? h : a , b = h + j > b ? h + j : b , d = i < d ? i : d , e = i + k > e ? i + k : e ; else if ( n === PIXI . Graphics . CIRC ) h = f . x , i = f . y , j = f . radius + o / 2 , k = f . radius + o / 2 , a = h - j < a ? h - j : a , b = h + j > b ? h + j : b , d = i - k < d ? i - k : d , e = i + k > e ? i + k : e ; else if ( n === PIXI . Graphics . ELIP ) h = f . x , i = f . y , j = f . width + o / 2 , k = f . height + o / 2 , a = h - j < a ? h - j : a , b = h + j > b ? h + j : b , d = i - k < d ? i - k : d , e = i + k > e ? i + k : e ; else { g = f . points ; for ( var p = 0 ; p < g . length ; p ++ ) g [ p ] instanceof c . Point ? ( h = g [ p ] . x , i = g [ p ] . y ) : ( h = g [ p ] , i = g [ p + 1 ] , p < g . length - 1 && p ++ ) , a = h - o < a ? h - o : a , b = h + o > b ? h + o : b , d = i - o < d ? i - o : d , e = i + o > e ? i + o : e } } else a = 0 , b = 0 , d = 0 , e = 0 ; var q = this . boundsPadding ; this . _localBounds . x = a - q , this . _localBounds . width = b - a + 2 * q , this . _localBounds . y = d - q , this . _localBounds . height = e - d + 2 * q } , PIXI . Graphics . prototype . _generateCachedSprite = function ( ) { var a = this . getLocalBounds ( ) ; if ( this . _cachedSprite ) this . _cachedSprite . buffer . resize ( a . width , a . height ) ; else { var b = new PIXI . CanvasBuffer ( a . width , a . height ) , c = PIXI . Texture . fromCanvas ( b . canvas ) ; this . _cachedSprite = new PIXI . Sprite ( c ) , this . _cachedSprite . buffer = b , this . _cachedSprite . worldTransform = this . worldTransform } this . _cachedSprite . anchor . x = - ( a . x / a . width ) , this . _cachedSprite . anchor . y = - ( a . y / a . height ) , this . _cachedSprite . buffer . context . translate ( - a . x , - a . y ) , this . worldAlpha = 1 , PIXI . CanvasGraphics . renderGraphics ( this , this . _cachedSprite . buffer . context ) , this . _cachedSprite . alpha = this . alpha } , PIXI . Graphics . prototype . updateCachedSpriteTexture = function ( ) { var a = this . _cachedSprite , b = a . texture , c = a . buffer . canvas ; b . baseTexture . width = c . width , b . baseTexture . height = c . height , b . crop . width = b . frame . width = c . width , b . crop . height = b . frame . height = c .
this . style . backgroundColor && ( this . context . fillStyle = this . style . backgroundColor , this . context . fillRect ( 0 , 0 , this . canvas . width , this . canvas . height ) ) , this . context . fillStyle = this . style . fill , this . context . font = this . style . font , this . context . strokeStyle = this . style . stroke , this . context . textBaseline = "alphabetic" , this . context . lineWidth = this . style . strokeThickness , this . context . lineCap = "round" , this . context . lineJoin = "round" ; var r , s ; for ( this . _charCount = 0 , h = 0 ; h < g ; h ++ ) r = this . style . strokeThickness / 2 , s = this . style . strokeThickness / 2 + h * o + f . ascent , h > 0 && ( s += q * h ) , "right" === this . style . align ? r += e - d [ h ] : "center" === this . style . align && ( r += ( e - d [ h ] ) / 2 ) , this . autoRound && ( r = Math . round ( r ) , s = Math . round ( s ) ) , this . colors . length > 0 || this . strokeColors . length > 0 || this . fontWeights . length > 0 || this . fontStyles . length > 0 ? this . updateLine ( b [ h ] , r , s ) : ( this . style . stroke && this . style . strokeThickness && ( this . updateShadow ( this . style . shadowStroke ) , 0 === c ? this . context . strokeText ( b [ h ] , r , s ) : this . renderTabLine ( b [ h ] , r , s , ! 1 ) ) , this . style . fill && ( this . updateShadow ( this . style . shadowFill ) , 0 === c ? this . context . fillText ( b [ h ] , r , s ) : this . renderTabLine ( b [ h ] , r , s , ! 0 ) ) ) ; this . updateTexture ( ) , this . dirty = ! 1 } , c . Text . prototype . renderTabLine = function ( a , b , c , d ) { var e = a . split ( /(?:\t)/ ) , f = this . style . tabs , g = 0 ; if ( Array . isArray ( f ) ) for ( var h = 0 , i = 0 ; i < e . length ; i ++ ) i > 0 && ( h += f [ i - 1 ] ) , g = b + h , d ? this . context . fillText ( e [ i ] , g , c ) : this . context . strokeText ( e [ i ] , g , c ) ; else for ( var i = 0 ; i < e . length ; i ++ ) { var j = Math . ceil ( this . context . measureText ( e [ i ] ) . width ) ; g = this . game . math . snapToCeil ( b , f ) , d ? this . context . fillText ( e [ i ] , g , c ) : this . context . strokeText ( e [ i ] , g , c ) , b = g + j } } , c . Text . prototype . updateShadow = function ( a ) { a ? ( this . context . shadowOffsetX = this . style . shadowOffsetX , this . context . shadowOffsetY = this . style . shadowOffsetY , this . context . shadowColor = this . style . shadowColor , this . context . shadowBlur = this . style . shadowBlur ) : ( this . context . shadowOffsetX = 0 , this . context . shadowOffsetY = 0 , this . context . shadowColor = 0 , this . context . shadowBlur = 0 ) } , c . Text . prototype . measureLine = function ( a ) { for ( var b = 0 , c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] ; if ( this . fontWeights . length > 0 || this . fontStyles . length > 0 ) { var e = this . fontToComponents ( this . context . font ) ; this . fontStyles [ this . _charCount ] && ( e . fontStyle = this . fontStyles [ this . _charCount ] ) , this . fontWeights [ this . _charCount ] && ( e . fontWeight = this . fontWeights [ this . _charCount ] ) , this . context . font = this . componentsToFont ( e ) } this . style . stroke && this . style . strokeThickness && ( this . strokeColors [ this . _charCount ] && ( this . context . strokeStyle = this . strokeColors [ this . _charCount ] ) , this . updateShadow ( this . style . shadowStroke ) ) , this . style . fill && ( this . colors [ this . _charCount ] && ( this . context . fillStyle = this . colors [ this . _charCount ] ) , this . updateShadow ( this . style . shadowFill ) ) , b += this . context . measureText ( d ) . width , this . _charCount ++ } return Math . ceil ( b ) } , c . Text . prototype . updateLine = function ( a , b , c ) { for ( var d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] ; if ( this . fontWeights . length > 0 || this . fontStyles . length > 0 ) { var f = this . fontToComponents ( this . context . font ) ; this . fontStyles [ this . _charCount ] && ( f . fontStyle = this . fontStyles [ this . _charCount ] ) , this . fontWeights [ this . _charCount ] && ( f . fontWeight = this . fontWeights [ this . _charCount ] ) , this . context . font = this . componentsToFont ( f ) } this . style . stroke && this . style . strokeThickness && ( this . strokeColors [ this . _charCount ] && ( this . context . strokeStyle = this . strokeColors [ this . _charCount ] ) , this . updateShadow ( this . style . shadowStroke ) , this . context . strokeText ( e , b , c ) ) , this . style . fill && ( this . colors [ this . _charCount ] && ( this . context . fillStyle = this . colors [ this . _charCount ] ) , this . updateShadow ( this . style . shadowFill ) , this . context . fillText ( e , b , c ) ) , b += this . context . measureText ( e ) . width , this . _charCount ++ } } , c . Text . prototype . clearColors = function ( ) { return this . colors = [ ] , this . strokeColors = [ ] , this . dirty = ! 0 , this } , c . Text . prototype . clearFontValues = function ( ) { return this . fontStyles = [ ] , this . fontWeights = [ ] , this . dirty = ! 0 , this } , c . Text . prototype . addColor = function ( a , b ) { return this . colors [ b ] = a , this . dirty = ! 0 , this } , c . Text . prototype . addStrokeColor = function ( a , b ) { return this . strokeColors [ b ] = a , this . dirty = ! 0 , this } , c . Text . prototype . addFontStyle = function ( a , b ) { return this . fontStyles [ b ] = a , this . dirty = ! 0 , this } , c . Text . prototype . addFontWeight = functio
} function b ( ) { l . canvas = ! ! window . CanvasRenderingContext2D || l . cocoonJS ; try { l . localStorage = ! ! localStorage . getItem } catch ( a ) { l . localStorage = ! 1 } l . file = ! ! ( window . File && window . FileReader && window . FileList && window . Blob ) , l . fileSystem = ! ! window . requestFileSystem , l . webGL = function ( ) { try { var a = document . createElement ( "canvas" ) ; return a . screencanvas = ! 1 , ! ! window . WebGLRenderingContext && ( a . getContext ( "webgl" ) || a . getContext ( "experimental-webgl" ) ) } catch ( a ) { return ! 1 } } ( ) , l . webGL = ! ! l . webGL , l . worker = ! ! window . Worker , l . pointerLock = "pointerLockElement" in document || "mozPointerLockElement" in document || "webkitPointerLockElement" in document , l . quirksMode = "CSS1Compat" !== document . compatMode , navigator . getUserMedia = navigator . getUserMedia || navigator . webkitGetUserMedia || navigator . mozGetUserMedia || navigator . msGetUserMedia || navigator . oGetUserMedia , window . URL = window . URL || window . webkitURL || window . mozURL || window . msURL , l . getUserMedia = l . getUserMedia && ! ! navigator . getUserMedia && ! ! window . URL , l . firefox && l . firefoxVersion < 21 && ( l . getUserMedia = ! 1 ) , ! l . iOS && ( l . ie || l . firefox || l . chrome ) && ( l . canvasBitBltShift = ! 0 ) , ( l . safari || l . mobileSafari ) && ( l . canvasBitBltShift = ! 1 ) } function c ( ) { ( "ontouchstart" in document . documentElement || window . navigator . maxTouchPoints && window . navigator . maxTouchPoints >= 1 ) && ( l . touch = ! 0 ) , ( window . navigator . msPointerEnabled || window . navigator . pointerEnabled ) && ( l . mspointer = ! 0 ) , l . cocoonJS || ( "onwheel" in window || l . ie && "WheelEvent" in window ? l . wheelEvent = "wheel" : "onmousewheel" in window ? l . wheelEvent = "mousewheel" : l . firefox && "MouseScrollEvent" in window && ( l . wheelEvent = "DOMMouseScroll" ) ) } function d ( ) { for ( var a = [ "requestFullscreen" , "requestFullScreen" , "webkitRequestFullscreen" , "webkitRequestFullScreen" , "msRequestFullscreen" , "msRequestFullScreen" , "mozRequestFullScreen" , "mozRequestFullscreen" ] , b = document . createElement ( "div" ) , c = 0 ; c < a . length ; c ++ ) if ( b [ a [ c ] ] ) { l . fullscreen = ! 0 , l . requestFullscreen = a [ c ] ; break } var d = [ "cancelFullScreen" , "exitFullscreen" , "webkitCancelFullScreen" , "webkitExitFullscreen" , "msCancelFullScreen" , "msExitFullscreen" , "mozCancelFullScreen" , "mozExitFullscreen" ] ; if ( l . fullscreen ) for ( var c = 0 ; c < d . length ; c ++ ) if ( document [ d [ c ] ] ) { l . cancelFullscreen = d [ c ] ; break } window . Element && Element . ALLOW _KEYBOARD _INPUT && ( l . fullscreenKeyboard = ! 0 ) } function e ( ) { var a = navigator . userAgent ; if ( /Arora/ . test ( a ) ? l . arora = ! 0 : /Edge\/\d+/ . test ( a ) ? l . edge = ! 0 : /Chrome\/(\d+)/ . test ( a ) && ! l . windowsPhone ? ( l . chrome = ! 0 , l . chromeVersion = parseInt ( RegExp . $1 , 10 ) ) : /Epiphany/ . test ( a ) ? l . epiphany = ! 0 : /Firefox\D+(\d+)/ . test ( a ) ? ( l . firefox = ! 0 , l . firefoxVersion = parseInt ( RegExp . $1 , 10 ) ) : /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\/(\d+)/ . test ( a ) && ! l . windowsPhone ? ( l . safari = ! 0 , /Version\/(\d+)\./ . test ( a ) && ( l . safariVersion = parseInt ( RegExp . $1 , 10 ) ) ) : /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 && "object" == typeof process . versions && ( l . nodeWebkit = ! ! process . versions [ "node-webkit" ] , l . electron = ! ! process . versions . electron ) , navigator . isCocoonJS && ( l . cocoonJS = ! 0 ) , l . cocoonJS ) try { l . cocoonJSApp = "undefined" != typeof CocoonJS } catch ( a ) { 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 ( a ) { } } function g ( ) { l . audioData = ! ! window . Audio , l . webAudio = ! ( ! window . AudioContex
} "undefined" != typeof this . vEnd [ a ] ? ( "string" == typeof this . vEnd [ a ] && ( this . vEnd [ a ] = this . vStart [ a ] + parseFloat ( this . vEnd [ a ] , 10 ) ) , this . parent . properties [ a ] = this . vEnd [ a ] ) : this . vEnd [ a ] = this . vStart [ a ] , this . vStartCache [ a ] = this . vStart [ a ] , this . vEndCache [ a ] = this . vEnd [ a ] } return this } , update : function ( a ) { if ( this . isRunning ) { if ( a < this . startTime ) return c . TweenData . RUNNING } else { if ( ! ( a >= this . startTime ) ) return c . TweenData . PENDING ; this . isRunning = ! 0 } var b = this . parent . frameBased ? this . game . time . physicsElapsedMS : this . game . time . elapsedMS ; this . parent . reverse ? ( this . dt -= b * this . parent . timeScale , this . dt = Math . max ( this . dt , 0 ) ) : ( this . dt += b * this . parent . timeScale , this . dt = Math . min ( this . dt , this . duration ) ) , this . percent = this . dt / this . duration , this . value = this . easingFunction ( this . percent ) ; for ( var d in this . vEnd ) { var e = this . vStart [ d ] , f = this . vEnd [ d ] ; Array . isArray ( f ) ? this . parent . target [ d ] = this . interpolationFunction . call ( this . interpolationContext , f , this . value ) : this . parent . target [ d ] = e + ( f - e ) * this . value } return ! this . parent . reverse && 1 === this . percent || this . parent . reverse && 0 === this . percent ? this . repeat ( ) : c . TweenData . RUNNING } , generateData : function ( a ) { this . parent . reverse ? this . dt = this . duration : this . dt = 0 ; var b = [ ] , c = ! 1 , d = 1 / a * 1e3 ; do { this . parent . reverse ? ( this . dt -= d , this . dt = Math . max ( this . dt , 0 ) ) : ( this . dt += d , this . dt = Math . min ( this . dt , this . duration ) ) , this . percent = this . dt / this . duration , this . value = this . easingFunction ( this . percent ) ; var e = { } ; for ( var f in this . vEnd ) { var g = this . vStart [ f ] , h = this . vEnd [ f ] ; Array . isArray ( h ) ? e [ f ] = this . interpolationFunction ( h , this . value ) : e [ f ] = g + ( h - g ) * this . value } b . push ( e ) , ( ! this . parent . reverse && 1 === this . percent || this . parent . reverse && 0 === this . percent ) && ( c = ! 0 ) } while ( ! c ) ; if ( this . yoyo ) { var i = b . slice ( ) ; i . reverse ( ) , b = b . concat ( i ) } return b } , repeat : function ( ) { if ( this . yoyo ) { if ( this . inReverse && 0 === this . repeatCounter ) { for ( var a in this . vStartCache ) this . vStart [ a ] = this . vStartCache [ a ] , this . vEnd [ a ] = this . vEndCache [ a ] ; return this . inReverse = ! 1 , c . TweenData . COMPLETE } this . inReverse = ! this . inReverse } else if ( 0 === this . repeatCounter ) return c . TweenData . COMPLETE ; if ( this . inReverse ) for ( var a in this . vStartCache ) this . vStart [ a ] = this . vEndCache [ a ] , this . vEnd [ a ] = this . vStartCache [ a ] ; else { for ( var a in this . vStartCache ) this . vStart [ a ] = this . vStartCache [ a ] , this . vEnd [ a ] = this . vEndCache [ a ] ; this . repeatCounter > 0 && this . repeatCounter -- } return this . startTime = this . game . time . time , this . yoyo && this . inReverse ? this . startTime += this . yoyoDelay : this . inReverse || ( this . startTime += this . repeatDelay ) , this . parent . reverse ? this . dt = this . duration : this . dt = 0 , c . TweenData . LOOPED } } , c . TweenData . prototype . constructor = c . TweenData , c . Easing = { Linear : { None : function ( a ) { return a } } , Quadratic : { In : function ( a ) { return a * a } , Out : function ( a ) { return a * ( 2 - a ) } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a : - . 5 * ( -- a * ( a - 2 ) - 1 ) } } , Cubic : { In : function ( a ) { return a * a * a } , Out : function ( a ) { return -- a * a * a + 1 } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a * a : . 5 * ( ( a -= 2 ) * a * a + 2 ) } } , Quartic : { In : function ( a ) { return a * a * a * a } , Out : function ( a ) { return 1 - -- a * a * a * a } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a * a * a : - . 5 * ( ( a -= 2 ) * a * a * a - 2 ) } } , Quintic : { In : function ( a ) { return a * a * a * a * a } , Out : function ( a ) { return -- a * a * a * a * a + 1 } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a * a * a * a : . 5 * ( ( a -= 2 ) * a * a * a * a + 2 ) } } , Sinusoidal : { In : function ( a ) { return 0 === a ? 0 : 1 === a ? 1 : 1 - Math . cos ( a * Math . PI / 2 ) } , Out : function ( a ) { return 0 === a ? 0 : 1 === a ? 1 : Math . sin ( a * Math . PI / 2 ) } , InOut : function ( a ) { return 0 === a ? 0 : 1 === a ? 1 : . 5 * ( 1 - Math . cos ( Math . PI * a ) ) } } , Exponential : { In : function ( a ) { return 0 === a ? 0 : Math . pow ( 1024 , a - 1 ) } , Out : function ( a ) { return 1 === a ? 1 : 1 - Math . pow ( 2 , - 10 * a ) } , InOut : function ( a ) { return 0 === a ? 0 : 1 === a ? 1 : ( a *= 2 ) < 1 ? . 5 * Math . pow ( 1024 , a - 1 ) : . 5 * ( - Math . pow ( 2 , - 10 * ( a - 1 ) ) + 2 ) } } , Circular : { In : function ( a ) { return 1 - Math . sqrt ( 1 - a * a ) } , Out : function ( a ) { return Math . sqrt ( 1 - -- a * a ) } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? - . 5 * ( Math . sqrt ( 1 - a * a ) - 1 ) : . 5 * ( Math . sqrt ( 1 - ( a -= 2 ) * a ) + 1 ) } } , Elastic : { In : function ( a ) { var b , c = . 1 , d = . 4 ; return 0 === a ? 0 : 1 === a ? 1 : ( ! c || c < 1 ? ( c = 1 , b = d / 4 ) : b = d * Math . asin ( 1 / c ) / ( 2 * Math . PI ) , - ( c * Math . pow ( 2 , 10 * ( a -= 1 ) ) * Math . sin ( ( a - b ) * ( 2 * Math . PI ) / d ) ) ) } , Out : function ( a ) { var b , c = . 1 , d = . 4 ; return 0 === a ? 0 : 1 === a ? 1 : ( ! c || c < 1 ? ( c = 1 , b = d / 4 ) : b = d * Math . asin ( 1 / c ) / ( 2 * Math . PI ) , c * Math . pow ( 2 , - 10 * a ) * Math . sin ( ( a - b ) * ( 2 * Math . PI ) / d ) + 1 ) } , In
var b = this . addImage ( "__missing" , null , a ) ; c . Cache . MISSING = new PIXI . Texture ( b . base ) } , addSound : function ( a , b , c , d , e ) { void 0 === d && ( d = ! 0 , e = ! 1 ) , void 0 === e && ( d = ! 1 , e = ! 0 ) ; var f = ! 1 ; e && ( f = ! 0 ) , this . _cache . sound [ a ] = { url : b , data : c , isDecoding : ! 1 , decoded : f , webAudio : d , audioTag : e , locked : this . game . sound . touchLocked } , this . _resolveURL ( b , this . _cache . sound [ a ] ) } , addText : function ( a , b , c ) { this . _cache . text [ a ] = { url : b , data : c } , this . _resolveURL ( b , this . _cache . text [ a ] ) } , addPhysicsData : function ( a , b , c , d ) { this . _cache . physics [ a ] = { url : b , data : c , format : d } , this . _resolveURL ( b , this . _cache . physics [ a ] ) } , addTilemap : function ( a , b , c , d ) { this . _cache . tilemap [ a ] = { url : b , data : c , format : d } , this . _resolveURL ( b , this . _cache . tilemap [ a ] ) } , addBinary : function ( a , b ) { this . _cache . binary [ a ] = b } , addBitmapData : function ( a , b , d ) { return b . key = a , void 0 === d && ( d = new c . FrameData , d . addFrame ( b . textureFrame ) ) , this . _cache . bitmapData [ a ] = { data : b , frameData : d } , b } , addBitmapFont : function ( a , b , d , e , f , g , h ) { var i = { url : b , data : d , font : null , base : new PIXI . BaseTexture ( d ) } ; void 0 === g && ( g = 0 ) , void 0 === h && ( h = 0 ) , "json" === f ? i . font = c . LoaderParser . jsonBitmapFont ( e , i . base , g , h ) : i . font = c . LoaderParser . xmlBitmapFont ( e , i . base , g , h ) , this . _cache . bitmapFont [ a ] = i , this . _resolveURL ( b , i ) } , addJSON : function ( a , b , c ) { this . _cache . json [ a ] = { url : b , data : c } , this . _resolveURL ( b , this . _cache . json [ a ] ) } , addXML : function ( a , b , c ) { this . _cache . xml [ a ] = { url : b , data : c } , this . _resolveURL ( b , this . _cache . xml [ a ] ) } , addVideo : function ( a , b , c , d ) { this . _cache . video [ a ] = { url : b , data : c , isBlob : d , locked : ! 0 } , this . _resolveURL ( b , this . _cache . video [ a ] ) } , addShader : function ( a , b , c ) { this . _cache . shader [ a ] = { url : b , data : c } , this . _resolveURL ( b , this . _cache . shader [ a ] ) } , addRenderTexture : function ( a , b ) { this . _cache . renderTexture [ a ] = { texture : b , frame : new c . Frame ( 0 , 0 , 0 , b . width , b . height , "" , "" ) } } , addSpriteSheet : function ( a , b , d , e , f , g , h , i ) { void 0 === g && ( g = - 1 ) , void 0 === h && ( h = 0 ) , void 0 === i && ( i = 0 ) ; var j = { key : a , url : b , data : d , frameWidth : e , frameHeight : f , margin : h , spacing : i , base : new PIXI . BaseTexture ( d ) , frameData : c . AnimationParser . spriteSheet ( this . game , d , e , f , g , h , i ) } ; this . _cache . image [ a ] = j , this . _resolveURL ( b , j ) } , addTextureAtlas : function ( a , b , d , e , f ) { var g = { key : a , url : b , data : d , base : new PIXI . BaseTexture ( d ) } ; f === c . Loader . TEXTURE _ATLAS _XML _STARLING ? g . frameData = c . AnimationParser . XMLData ( this . game , e , a ) : f === c . Loader . TEXTURE _ATLAS _JSON _PYXEL ? g . frameData = c . AnimationParser . JSONDataPyxel ( this . game , e , a ) : Array . isArray ( e . frames ) ? g . frameData = c . AnimationParser . JSONData ( this . game , e , a ) : g . frameData = c . AnimationParser . JSONDataHash ( this . game , e , a ) , this . _cache . image [ a ] = g , this . _resolveURL ( b , g ) } , reloadSound : function ( a ) { var b = this , c = this . getSound ( a ) ; c && ( c . data . src = c . url , c . data . addEventListener ( "canplaythrough" , function ( ) { return b . reloadSoundComplete ( a ) } , ! 1 ) , c . data . load ( ) ) } , reloadSoundComplete : function ( a ) { var b = this . getSound ( a ) ; b && ( b . locked = ! 1 , this . onSoundUnlock . dispatch ( a ) ) } , updateSound : function ( a , b , c ) { var d = this . getSound ( a ) ; d && ( d [ b ] = c ) } , decodedSound : function ( a , b ) { var c = this . getSound ( a ) ; c . data = b , c . decoded = ! 0 , c . isDecoding = ! 1 } , isSoundDecoded : function ( a ) { var b = this . getItem ( a , c . Cache . SOUND , "isSoundDecoded" ) ; if ( b ) return b . decoded } , isSoundReady : function ( a ) { var b = this . getItem ( a , c . Cache . SOUND , "isSoundDecoded" ) ; if ( b ) return b . decoded && ! this . game . sound . touchLocked } , checkKey : function ( a , b ) { return ! ! this . _cacheMap [ a ] [ b ] } , checkURL : function ( a ) { return ! ! this . _urlMap [ this . _resolveURL ( a ) ] } , 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 ) } , 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 ) { return this . checkKey ( c . Cache . JSON , a ) } , checkXMLKey : function ( a ) { return this . checkKey ( c . Cache . XML , a ) }
} return this . finalizeBitmapFont ( b , e ) } , jsonBitmapFont : function ( a , b , c , d ) { var e = { font : a . font . info . _face , size : parseInt ( a . font . info . _size , 10 ) , lineHeight : parseInt ( a . font . common . _lineHeight , 10 ) + d , chars : { } } ; return a . font . chars . char . forEach ( function ( a ) { var b = parseInt ( a . _id , 10 ) ; e . chars [ b ] = { x : parseInt ( a . _x , 10 ) , y : parseInt ( a . _y , 10 ) , width : parseInt ( a . _width , 10 ) , height : parseInt ( a . _height , 10 ) , xOffset : parseInt ( a . _xoffset , 10 ) , yOffset : parseInt ( a . _yoffset , 10 ) , xAdvance : parseInt ( a . _xadvance , 10 ) + c , kerning : { } } } ) , a . font . kernings && a . font . kernings . kerning && a . font . kernings . kerning . forEach ( function ( a ) { e . chars [ a . _second ] . kerning [ a . _first ] = parseInt ( a . _amount , 10 ) } ) , this . finalizeBitmapFont ( b , e ) } , finalizeBitmapFont : function ( a , b ) { return Object . keys ( b . chars ) . forEach ( function ( d ) { var e = b . chars [ d ] ; e . texture = new PIXI . Texture ( a , new c . Rectangle ( e . x , e . y , e . width , e . height ) ) } ) , b } } , c . AudioSprite = function ( a , b ) { this . game = a , this . key = b , this . config = this . game . cache . getJSON ( b + "-audioatlas" ) , this . autoplayKey = null , this . autoplay = ! 1 , this . sounds = { } ; 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 void 0 === 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 ) { void 0 === d && ( d = 1 ) , void 0 === e && ( e = ! 1 ) , void 0 === f && ( f = a . sound . connectToMaster ) , this . game = a , this . name = b , this . key = b , this . loop = e , 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 , void 0 === this . context . createGain ? this . gainNode = this . context . createGainNode ( ) : this . gainNode = 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 . _tempPause = 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 ) { void 0 !== c && null !== c || ( c = 1 ) , void 0 !== d && null !== d || ( d = 1 ) , void 0 === 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 . _sound . onended = null , this . isPlaying = ! 1 , this . currentTime = this . durationMS , this . stop ( ) } , update : function ( ) { return this . game . cache . checkSoundKey ( this . key ) ? ( this . isDecoded && ! this . _onDecodedEventDispatched && ( this . onDecoded . dispatch ( this ) , this . _onDecodedEventDispatched = ! 0 ) , this . pendingPlayback && this . game . cache . isSoundReady ( this . key ) && ( this . p
i . insertBefore ( f , h ) , f . appendChild ( h ) } return this . game . device . fullscreenKeyboard ? f [ this . game . device . requestFullscreen ] ( Element . ALLOW _KEYBOARD _INPUT ) : f [ this . game . device . requestFullscreen ] ( ) , ! 0 } , stopFullScreen : function ( ) { return ! ( ! this . isFullScreen || ! this . compatibility . supportsFullScreen ) && ( this . hasPhaserSetFullScreen = ! 1 , document [ this . game . device . cancelFullscreen ] ( ) , ! 0 ) } , cleanupCreatedTarget : function ( ) { var a = this . _createdFullScreenTarget ; if ( a && a . parentNode ) { var b = a . parentNode ; b . insertBefore ( this . game . canvas , a ) , b . removeChild ( a ) } this . _createdFullScreenTarget = null } , prepScreenMode : function ( a ) { var b = ! ! this . _createdFullScreenTarget , d = this . _createdFullScreenTarget || this . fullScreenTarget ; a ? ( b || this . fullScreenScaleMode === c . ScaleManager . EXACT _FIT ) && d !== this . game . canvas && ( this . _fullScreenRestore = { targetWidth : d . style . width , targetHeight : d . style . height } , d . style . width = "100%" , d . style . height = "100%" ) : ( this . _fullScreenRestore && ( d . style . width = this . _fullScreenRestore . targetWidth , d . style . height = this . _fullScreenRestore . targetHeight , this . _fullScreenRestore = null ) , this . updateDimensions ( this . _gameSize . width , this . _gameSize . height , ! 0 ) , this . resetCanvas ( ) ) } , fullScreenChange : function ( a ) { this . event = a , this . isFullScreen ? ( this . prepScreenMode ( ! 0 ) , this . updateLayout ( ) , this . queueUpdate ( ! 0 ) ) : ( this . prepScreenMode ( ! 1 ) , this . cleanupCreatedTarget ( ) , this . updateLayout ( ) , this . queueUpdate ( ! 0 ) ) , this . onFullScreenChange . dispatch ( this , this . width , this . height ) } , fullScreenError : function ( a ) { this . event = a , this . cleanupCreatedTarget ( ) , console . warn ( "Phaser.ScaleManager: requestFullscreen failed or device does not support the Fullscreen API" ) , this . onFullScreenError . dispatch ( this ) } , scaleSprite : function ( a , b , c , d ) { if ( void 0 === b && ( b = this . width ) , void 0 === c && ( c = this . height ) , void 0 === d && ( d = ! 1 ) , ! a || ! a . scale ) return a ; if ( a . scale . x = 1 , a . scale . y = 1 , a . width <= 0 || a . height <= 0 || b <= 0 || c <= 0 ) return a ; var e = b , f = a . height * b / a . width , g = a . width * c / a . height , h = c , i = g > b ; return i = i ? d : ! d , i ? ( a . width = Math . floor ( e ) , a . height = Math . floor ( f ) ) : ( a . width = Math . floor ( g ) , a . height = Math . floor ( h ) ) , a } , destroy : function ( ) { this . game . onResume . remove ( this . _gameResumed , this ) , window . removeEventListener ( "orientationchange" , this . _orientationChange , ! 1 ) , window . removeEventListener ( "resize" , this . _windowResize , ! 1 ) , this . compatibility . supportsFullScreen && ( document . removeEventListener ( "webkitfullscreenchange" , this . _fullScreenChange , ! 1 ) , document . removeEventListener ( "mozfullscreenchange" , this . _fullScreenChange , ! 1 ) , document . removeEventListener ( "MSFullscreenChange" , this . _fullScreenChange , ! 1 ) , document . removeEventListener ( "fullscreenchange" , this . _fullScreenChange , ! 1 ) , document . removeEventListener ( "webkitfullscreenerror" , this . _fullScreenError , ! 1 ) , document . removeEventListener ( "mozfullscreenerror" , this . _fullScreenError , ! 1 ) , document . removeEventListener ( "MSFullscreenError" , this . _fullScreenError , ! 1 ) , document . removeEventListener ( "fullscreenerror" , this . _fullScreenError , ! 1 ) ) } } , c . ScaleManager . prototype . constructor = c . ScaleManager , Object . defineProperty ( c . ScaleManager . prototype , "boundingParent" , { get : function ( ) { if ( this . parentIsWindow || this . isFullScreen && this . hasPhaserSetFullScreen && ! this . _createdFullScreenTarget ) return null ; var a = this . game . canvas && this . game . canvas . parentNode ; return a || null } } ) , Object . defineProperty ( c . ScaleManager . prototype , "scaleMode" , { get : function ( ) { return this . _scaleMode } , set : function ( a ) { return a !== this . _scaleMode && ( this . isFullScreen || ( this . updateDimensions ( this . _gameSize . width , this . _gameSize . height , ! 0 ) , this . queueUpdate ( ! 0 ) ) , this . _scaleMode = a ) , this . _scaleMode } } ) , Object . defineProperty ( c . ScaleManager . prototype , "fullScreenScaleMode" , { get : function ( ) { return this . _fullScreenScaleMode } , set : function ( a ) { return a !== this . _fullScreenScaleMode && ( this . isFullScreen ? ( this . prepScreenMode ( ! 1 ) , this . _fullScreenScaleMode = a , this . prepScreenMode ( ! 0 ) , this . queueUpdate ( ! 0 ) ) : this . _fullScreenScaleMode = a ) , this . _fullScreenScaleMode } } ) , Object . defineProperty ( c . ScaleManager . prototype , "currentScaleMode" , { get : function ( ) { return this . isFullScreen ? this . _fullScreenScaleMode : this . _scaleMode } } ) , Object . defineProperty ( c . ScaleManager . prototype , "pageAlignHorizontally" , { get : function ( ) { return this . _pageAl
} , hexToColor : function ( a , b ) { a = a . replace ( /^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i , function ( a , b , c , d ) { return b + b + c + c + d + d } ) ; var d = /^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i . exec ( a ) ; if ( d ) { var e = parseInt ( d [ 1 ] , 16 ) , f = parseInt ( d [ 2 ] , 16 ) , g = parseInt ( d [ 3 ] , 16 ) ; b ? ( b . r = e , b . g = f , b . b = g ) : b = c . Color . createColor ( e , f , g ) } return b } , webToColor : function ( a , b ) { b || ( b = c . Color . createColor ( ) ) ; var d = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/ . exec ( a ) ; return d && ( b . r = parseInt ( d [ 1 ] , 10 ) , b . g = parseInt ( d [ 2 ] , 10 ) , b . b = parseInt ( d [ 3 ] , 10 ) , b . a = void 0 !== d [ 4 ] ? parseFloat ( d [ 4 ] ) : 1 , c . Color . updateColor ( b ) ) , b } , valueToColor : function ( a , b ) { if ( b || ( b = c . Color . createColor ( ) ) , "string" == typeof a ) return 0 === a . indexOf ( "rgb" ) ? c . Color . webToColor ( a , b ) : ( b . a = 1 , c . Color . hexToColor ( a , b ) ) ; if ( "number" == typeof a ) { var d = c . Color . getRGB ( a ) ; return b . r = d . r , b . g = d . g , b . b = d . b , b . a = d . a / 255 , b } return b } , componentToHex : function ( a ) { var b = a . toString ( 16 ) ; return 1 === b . length ? "0" + b : b } , HSVColorWheel : function ( a , b ) { void 0 === a && ( a = 1 ) , void 0 === b && ( b = 1 ) ; for ( var d = [ ] , e = 0 ; e <= 359 ; e ++ ) d . push ( c . Color . HSVtoRGB ( e / 359 , a , b ) ) ; return d } , HSLColorWheel : function ( a , b ) { void 0 === a && ( a = . 5 ) , void 0 === b && ( b = . 5 ) ; for ( var d = [ ] , e = 0 ; e <= 359 ; e ++ ) d . push ( c . Color . HSLtoRGB ( e / 359 , a , b ) ) ; return d } , interpolateColor : function ( a , b , d , e , f ) { void 0 === f && ( f = 255 ) ; var g = c . Color . getRGB ( a ) , h = c . Color . getRGB ( b ) , i = ( h . red - g . red ) * e / d + g . red , j = ( h . green - g . green ) * e / d + g . green , k = ( h . blue - g . blue ) * e / d + g . blue ; return c . Color . getColor32 ( f , i , j , k ) } , interpolateColorWithRGB : function ( a , b , d , e , f , g ) { var h = c . Color . getRGB ( a ) , i = ( b - h . red ) * g / f + h . red , j = ( d - h . green ) * g / f + h . green , k = ( e - h . blue ) * g / f + h . blue ; return c . Color . getColor ( i , j , k ) } , interpolateRGB : function ( a , b , d , e , f , g , h , i ) { var j = ( e - a ) * i / h + a , k = ( f - b ) * i / h + b , l = ( g - d ) * i / h + d ; return c . Color . getColor ( j , k , l ) } , getRandomColor : function ( a , b , d ) { if ( void 0 === a && ( a = 0 ) , void 0 === b && ( b = 255 ) , void 0 === d && ( d = 255 ) , b > 255 || a > b ) return c . Color . getColor ( 255 , 255 , 255 ) ; var e = a + Math . round ( Math . random ( ) * ( b - a ) ) , f = a + Math . round ( Math . random ( ) * ( b - a ) ) , g = a + Math . round ( Math . random ( ) * ( b - a ) ) ; return c . Color . getColor32 ( d , e , f , g ) } , getRGB : function ( a ) { return a > 16777215 ? { alpha : a >>> 24 , red : a >> 16 & 255 , green : a >> 8 & 255 , blue : 255 & a , a : a >>> 24 , r : a >> 16 & 255 , g : a >> 8 & 255 , b : 255 & a } : { alpha : 255 , red : a >> 16 & 255 , green : a >> 8 & 255 , blue : 255 & a , a : 255 , r : a >> 16 & 255 , g : a >> 8 & 255 , b : 255 & a } } , getWebRGB : function ( a ) { if ( "object" == typeof a ) return "rgba(" + a . r . toString ( ) + "," + a . g . toString ( ) + "," + a . b . toString ( ) + "," + ( a . a / 255 ) . toString ( ) + ")" ; var b = c . Color . getRGB ( a ) ; return "rgba(" + b . r . toString ( ) + "," + b . g . toString ( ) + "," + b . b . toString ( ) + "," + ( b . a / 255 ) . toString ( ) + ")" } , getAlpha : function ( a ) { return a >>> 24 } , getAlphaFloat : function ( a ) { return ( a >>> 24 ) / 255 } , getRed : function ( a ) { return a >> 16 & 255 } , getGreen : function ( a ) { return a >> 8 & 255 } , getBlue : function ( a ) { return 255 & a } , blendNormal : function ( a ) { return a } , blendLighten : function ( a , b ) { return b > a ? b : a } , blendDarken : function ( a , b ) { return b > a ? a : b } , blendMultiply : function ( a , b ) { return a * b / 255 } , blendAverage : function ( a , b ) { return ( a + b ) / 2 } , blendAdd : function ( a , b ) { return Math . min ( 255 , a + b ) } , blendSubtract : function ( a , b ) { return Math . max ( 0 , a + b - 255 ) } , blendDifference : function ( a , b ) { return Math . abs ( a - b ) } , blendNegation : function ( a , b ) { return 255 - Math . abs ( 255 - a - b ) } , blendScreen : function ( a , b ) { return 255 - ( ( 255 - a ) * ( 255 - b ) >> 8 ) } , blendExclusion : function ( a , b ) { return a + b - 2 * a * b / 255 } , blendOverlay : function ( a , b ) { return b < 128 ? 2 * a * b / 255 : 255 - 2 * ( 255 - a ) * ( 255 - b ) / 255 } , blendSoftLight : function ( a , b ) { return b < 128 ? 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 b < 128 ? c . Color . blendLinearBurn ( a , 2 * b ) : c . Color . blendLinearDodge ( a , 2 * ( b - 128 ) ) } , blendVividLight : function ( a , b ) { return b < 128 ? c . Color . blendColorBurn ( a , 2 * b ) : c . Color . blendColorDodge ( a , 2 * ( b - 128 ) ) } , blendPinLight : function ( a , b ) { return b < 128 ? c . Color . blendDarken ( a , 2 * b ) : c . Color . blendLighten ( a , 2 * ( b - 128 ) ) } , blendHardMix : functio
this . isMoving = ! 0 , ! 0 } , setSize : function ( a , b , c , d ) { void 0 === c && ( c = this . offset . x ) , void 0 === d && ( d = this . offset . y ) , this . sourceWidth = a , this . sourceHeight = b , this . width = this . sourceWidth * this . _sx , this . height = this . sourceHeight * this . _sy , this . halfWidth = Math . floor ( this . width / 2 ) , this . halfHeight = Math . floor ( this . height / 2 ) , this . offset . setTo ( c , d ) , this . center . setTo ( this . position . x + this . halfWidth , this . position . y + this . halfHeight ) , this . isCircle = ! 1 , this . radius = 0 } , setCircle : function ( a , b , c ) { void 0 === b && ( b = this . offset . x ) , void 0 === c && ( c = this . offset . y ) , a > 0 ? ( this . isCircle = ! 0 , this . radius = a , this . sourceWidth = 2 * a , this . sourceHeight = 2 * a , this . width = this . sourceWidth * this . _sx , this . height = this . sourceHeight * this . _sy , this . halfWidth = Math . floor ( this . width / 2 ) , this . halfHeight = Math . floor ( this . height / 2 ) , this . offset . setTo ( b , c ) , this . center . setTo ( this . position . x + this . halfWidth , this . position . y + this . halfHeight ) ) : this . isCircle = ! 1 } , reset : function ( a , b ) { this . velocity . set ( 0 ) , this . acceleration . set ( 0 ) , this . speed = 0 , this . angularVelocity = 0 , this . angularAcceleration = 0 , this . position . x = a - this . sprite . anchor . x * this . sprite . width + this . sprite . scale . x * this . offset . x , this . position . x -= this . sprite . scale . x < 0 ? this . width : 0 , this . position . y = b - this . sprite . anchor . y * this . sprite . height + this . sprite . scale . y * this . offset . y , this . position . y -= this . sprite . scale . y < 0 ? this . height : 0 , this . prev . x = this . position . x , this . prev . y = this . position . y , this . rotation = this . sprite . angle , this . preRotation = this . rotation , this . _sx = this . sprite . scale . x , this . _sy = this . sprite . scale . y , this . center . setTo ( this . position . x + this . halfWidth , this . position . y + this . halfHeight ) } , getBounds : function ( a ) { return this . isCircle ? ( a . x = this . center . x - this . radius , a . y = this . center . y - this . radius , a . right = this . center . x + this . radius , a . bottom = this . center . y + this . radius ) : ( a . x = this . x , a . y = this . y , a . right = this . right , a . bottom = this . bottom ) , a } , hitTest : function ( a , b ) { return this . isCircle ? c . Circle . contains ( this , a , b ) : c . Rectangle . contains ( this , a , b ) } , onFloor : function ( ) { return this . blocked . down } , onCeiling : function ( ) { return this . blocked . up } , onWall : function ( ) { return this . blocked . left || this . blocked . right } , deltaAbsX : function ( ) { return this . deltaX ( ) > 0 ? this . deltaX ( ) : - this . deltaX ( ) } , deltaAbsY : function ( ) { return this . deltaY ( ) > 0 ? this . deltaY ( ) : - this . deltaY ( ) } , deltaX : function ( ) { return this . position . x - this . prev . x } , deltaY : function ( ) { return this . position . y - this . prev . y } , deltaZ : function ( ) { return this . rotation - this . preRotation } , destroy : function ( ) { this . sprite . parent && this . sprite . parent instanceof c . Group && this . sprite . parent . removeFromHash ( this . sprite ) , this . sprite . body = null , this . sprite = null } } , Object . defineProperty ( c . Physics . Arcade . Body . prototype , "left" , { get : function ( ) { return this . position . x } } ) , Object . defineProperty ( c . Physics . Arcade . Body . prototype , "right" , { get : function ( ) { return this . position . x + this . width } } ) , Object . defineProperty ( c . Physics . Arcade . Body . prototype , "top" , { get : function ( ) { return this . position . y } } ) , Object . defineProperty ( c . Physics . Arcade . Body . prototype , "bottom" , { get : function ( ) { return this . position . y + this . height } } ) , Object . defineProperty ( c . Physics . Arcade . Body . prototype , "x" , { get : function ( ) { return this . position . x } , set : function ( a ) { this . position . x = a } } ) , Object . defineProperty ( c . Physics . Arcade . Body . prototype , "y" , { get : function ( ) { return this . position . y } , set : function ( a ) { this . position . y = a } } ) , c . Physics . Arcade . Body . render = function ( a , b , c , d ) { void 0 === d && ( d = ! 0 ) , c = c || "rgba(0,255,0,0.4)" , a . fillStyle = c , a . strokeStyle = c , b . isCircle ? ( a . beginPath ( ) , a . arc ( b . center . x - b . game . camera . x , b . center . y - b . game . camera . y , b . radius , 0 , 2 * Math . PI ) , d ? a . fill ( ) : a . stroke ( ) ) : d ? a . fillRect ( b . position . x - b . game . camera . x , b . position . y - b . game . camera . y , b . width , b . height ) : a . strokeRect ( b . position . x - b . game . camera . x , b . position . y - b . game . camera . y , b . width , b . height ) } , c . Physics . Arcade . Body . renderBodyInfo = function ( a , b ) { a . line ( "x: " + b . x . toFixed ( 2 ) , "y: " + b . y . toFixed ( 2 ) , "width: " + b . width , "height: " + b . height ) , a . line ( "velocity x: " + b . velocity . x . toFixed ( 2 ) , "y: " + b . velocity . y . toFixed ( 2 ) , "deltaX: " + b . _dx . toFixed ( 2 ) , "deltaY: " + b . _dy . toFixed ( 2 ) ) , a . line ( "acceleration x: " + b . acceleration . x . toFixed ( 2 ) , "y: " + b . acceleration . y . toFixed ( 2 ) , "speed: " + b . speed . toFixed ( 2 ) , "angle: " + b . angle . toFixed (
} , moveLeft : function ( a ) { this . data . velocity [ 0 ] = this . world . pxmi ( - a ) } , moveRight : function ( a ) { this . data . velocity [ 0 ] = this . world . pxmi ( a ) } , moveUp : function ( a ) { this . data . velocity [ 1 ] = this . world . pxmi ( - a ) } , moveDown : function ( a ) { this . data . velocity [ 1 ] = this . world . pxmi ( a ) } , preUpdate : function ( ) { this . dirty = ! 0 , this . removeNextStep && ( this . removeFromWorld ( ) , this . removeNextStep = ! 1 ) } , postUpdate : function ( ) { this . sprite . x = this . world . mpxi ( this . data . position [ 0 ] ) + this . offset . x , this . sprite . y = this . world . mpxi ( this . data . position [ 1 ] ) + this . offset . y , this . fixedRotation || ( this . sprite . rotation = this . data . angle ) , this . debugBody && this . debugBody . updateSpriteTransform ( ) , this . dirty = ! 1 } , reset : function ( a , b , c , d ) { void 0 === c && ( c = ! 1 ) , void 0 === d && ( d = ! 1 ) , this . setZeroForce ( ) , this . setZeroVelocity ( ) , this . setZeroRotation ( ) , c && this . setZeroDamping ( ) , d && ( this . mass = 1 ) , this . x = a , this . y = b } , addToWorld : function ( ) { if ( this . game . physics . p2 . _toRemove ) for ( var a = 0 ; a < this . game . physics . p2 . _toRemove . length ; a ++ ) this . game . physics . p2 . _toRemove [ a ] === this && this . game . physics . p2 . _toRemove . splice ( a , 1 ) ; this . data . world !== this . game . physics . p2 . world && this . game . physics . p2 . addBody ( this ) } , removeFromWorld : function ( ) { this . data . world === this . game . physics . p2 . world && this . game . physics . p2 . removeBodyNextStep ( this ) } , destroy : function ( ) { this . removeFromWorld ( ) , this . clearShapes ( ) , this . _bodyCallbacks = { } , this . _bodyCallbackContext = { } , this . _groupCallbacks = { } , this . _groupCallbackContext = { } , this . debugBody && this . debugBody . destroy ( ! 0 , ! 0 ) , this . debugBody = null , this . sprite && ( this . sprite . body = null , this . sprite = null ) } , clearShapes : function ( ) { for ( var a = this . data . shapes . length ; a -- ; ) this . data . removeShape ( this . data . shapes [ a ] ) ; this . shapeChanged ( ) } , addShape : function ( a , b , c , d ) { return void 0 === b && ( b = 0 ) , void 0 === c && ( c = 0 ) , void 0 === d && ( d = 0 ) , this . data . addShape ( a , [ this . world . pxmi ( b ) , this . world . pxmi ( c ) ] , d ) , this . shapeChanged ( ) , a } , addCircle : function ( a , b , c , d ) { var e = new p2 . Circle ( { radius : this . world . pxm ( a ) } ) ; return this . addShape ( e , b , c , d ) } , addRectangle : function ( a , b , c , d , e ) { var f = new p2 . Box ( { width : this . world . pxm ( a ) , height : this . world . pxm ( b ) } ) ; return this . addShape ( f , c , d , e ) } , addPlane : function ( a , b , c ) { var d = new p2 . Plane ; return this . addShape ( d , a , b , c ) } , addParticle : function ( a , b , c ) { var d = new p2 . Particle ; return this . addShape ( d , a , b , c ) } , addLine : function ( a , b , c , d ) { var e = new p2 . Line ( { length : this . world . pxm ( a ) } ) ; return this . addShape ( e , b , c , d ) } , addCapsule : function ( a , b , c , d , e ) { var f = new p2 . Capsule ( { length : this . world . pxm ( a ) , radius : this . world . pxm ( b ) } ) ; return this . addShape ( f , c , d , e ) } , addPolygon : function ( a , b ) { a = a || { } , Array . isArray ( b ) || ( b = Array . prototype . slice . call ( arguments , 1 ) ) ; var c = [ ] ; if ( 1 === b . length && Array . isArray ( b [ 0 ] ) ) c = b [ 0 ] . slice ( 0 ) ; else if ( Array . isArray ( b [ 0 ] ) ) c = b . slice ( ) ; else if ( "number" == typeof b [ 0 ] ) for ( var d = 0 , e = b . length ; d < e ; d += 2 ) c . push ( [ b [ d ] , b [ d + 1 ] ] ) ; var f = c . length - 1 ; c [ f ] [ 0 ] === c [ 0 ] [ 0 ] && c [ f ] [ 1 ] === c [ 0 ] [ 1 ] && c . pop ( ) ; for ( var g = 0 ; g < c . length ; g ++ ) c [ g ] [ 0 ] = this . world . pxmi ( c [ g ] [ 0 ] ) , c [ g ] [ 1 ] = this . world . pxmi ( c [ g ] [ 1 ] ) ; var h = this . data . fromPolygon ( c , a ) ; return this . shapeChanged ( ) , h } , removeShape : function ( a ) { var b = this . data . removeShape ( a ) ; return this . shapeChanged ( ) , b } , setCircle : function ( a , b , c , d ) { return this . clearShapes ( ) , this . addCircle ( a , b , c , d ) } , setRectangle : function ( a , b , c , d , e ) { return void 0 === a && ( a = 16 ) , void 0 === b && ( b = 16 ) , this . clearShapes ( ) , this . addRectangle ( a , b , c , d , e ) } , setRectangleFromSprite : function ( a ) { return void 0 === a && ( a = this . sprite ) , this . clearShapes ( ) , this . addRectangle ( a . width , a . height , 0 , 0 , a . rotation ) } , setMaterial : function ( a , b ) { if ( void 0 === b ) for ( var c = this . data . shapes . length - 1 ; c >= 0 ; c -- ) this . data . shapes [ c ] . material = a ; else b . material = a } , shapeChanged : function ( ) { this . debugBody && this . debugBody . draw ( ) } , addPhaserPolygon : function ( a , b ) { for ( var c = this . game . cache . getPhysicsData ( a , b ) , d = [ ] , e = 0 ; e < c . length ; e ++ ) { var f = c [ e ] , g = this . addFixture ( f ) ; d [ f . filter . group ] = d [ f . filter . group ] || [ ] , d [ f . filter . group ] = d [ f . filter . group ] . concat ( g ) , f . fixtureKey && ( d [ f . fixtureKey ] = g ) } return this . data . aabbNeedsUpdate = ! 0 , this . shapeChanged ( ) , d } , addFixture : function ( a ) { var b = [ ] ; if ( a . circle ) { var c = new p2 . Circle ( { radius : this . world . pxm ( a . circle . radius ) } ) ; c . collisionGroup = a . filter . categoryBits , c . collisionMask = a . filter . maskBits , c . sensor = a . isSe
} , getTileWorldXY : function ( a , b , c , d , e , f ) { return void 0 === c && ( c = this . tileWidth ) , void 0 === d && ( d = this . tileHeight ) , e = this . getLayer ( e ) , a = this . game . math . snapToFloor ( a , c ) / c , b = this . game . math . snapToFloor ( b , d ) / d , this . getTile ( a , b , e , f ) } , copy : function ( a , b , c , d , e ) { if ( e = this . getLayer ( e ) , ! this . layers [ e ] ) return void ( this . _results . length = 0 ) ; void 0 === a && ( a = 0 ) , void 0 === b && ( b = 0 ) , void 0 === c && ( c = this . layers [ e ] . width ) , void 0 === d && ( d = this . layers [ e ] . height ) , a < 0 && ( a = 0 ) , b < 0 && ( b = 0 ) , c > this . layers [ e ] . width && ( c = this . layers [ e ] . width ) , d > this . layers [ e ] . height && ( d = this . layers [ e ] . height ) , this . _results . length = 0 , this . _results . push ( { x : a , y : b , width : c , height : d , layer : e } ) ; for ( var f = b ; f < b + d ; f ++ ) for ( var g = a ; g < a + c ; g ++ ) this . _results . push ( this . layers [ e ] . data [ f ] [ g ] ) ; return this . _results } , paste : function ( a , b , c , d ) { if ( void 0 === a && ( a = 0 ) , void 0 === b && ( b = 0 ) , d = this . getLayer ( d ) , c && ! ( c . length < 2 ) ) { for ( var e = a - c [ 1 ] . x , f = b - c [ 1 ] . y , g = 1 ; g < c . length ; g ++ ) this . layers [ d ] . data [ f + c [ g ] . y ] [ e + c [ g ] . x ] . copy ( c [ g ] ) ; this . layers [ d ] . dirty = ! 0 , this . calculateFaces ( d ) } } , swap : function ( a , b , c , d , e , f , g ) { g = this . getLayer ( g ) , this . copy ( c , d , e , f , g ) , this . _results . length < 2 || ( this . _tempA = a , this . _tempB = b , this . _results . forEach ( this . swapHandler , this ) , this . paste ( c , d , this . _results , g ) ) } , swapHandler : function ( a ) { a . index === this . _tempA ? a . index = this . _tempB : a . index === this . _tempB && ( a . index = this . _tempA ) } , forEach : function ( a , b , c , d , e , f , g ) { g = this . getLayer ( g ) , this . copy ( c , d , e , f , g ) , this . _results . length < 2 || ( this . _results . forEach ( a , b ) , this . paste ( c , d , this . _results , g ) ) } , replace : function ( a , b , c , d , e , f , g ) { if ( g = this . getLayer ( g ) , this . copy ( c , d , e , f , g ) , ! ( this . _results . length < 2 ) ) { for ( var h = 1 ; h < this . _results . length ; h ++ ) this . _results [ h ] . index === a && ( this . _results [ h ] . index = b ) ; this . paste ( c , d , this . _results , g ) } } , random : function ( a , b , c , d , e ) { if ( e = this . getLayer ( e ) , this . copy ( a , b , c , d , e ) , ! ( this . _results . length < 2 ) ) { for ( var f = [ ] , g = 1 ; g < this . _results . length ; g ++ ) if ( this . _results [ g ] . index ) { var h = this . _results [ g ] . index ; f . indexOf ( h ) === - 1 && f . push ( h ) } for ( var i = 1 ; i < this . _results . length ; i ++ ) this . _results [ i ] . index = this . game . rnd . pick ( f ) ; this . paste ( a , b , this . _results , e ) } } , shuffle : function ( a , b , d , e , f ) { if ( f = this . getLayer ( f ) , this . copy ( a , b , d , e , f ) , ! ( this . _results . length < 2 ) ) { for ( var g = [ ] , h = 1 ; h < this . _results . length ; h ++ ) this . _results [ h ] . index && g . push ( this . _results [ h ] . index ) ; c . ArrayUtils . shuffle ( g ) ; for ( var i = 1 ; i < this . _results . length ; i ++ ) this . _results [ i ] . index = g [ i - 1 ] ; this . paste ( a , b , this . _results , f ) } } , fill : function ( a , b , c , d , e , f ) { if ( f = this . getLayer ( f ) , this . copy ( b , c , d , e , f ) , ! ( this . _results . length < 2 ) ) { for ( var g = 1 ; g < this . _results . length ; g ++ ) this . _results [ g ] . index = a ; this . paste ( b , c , this . _results , f ) } } , removeAllLayers : function ( ) { this . layers . length = 0 , this . currentLayer = 0 } , dump : function ( ) { for ( var a = "" , b = [ "" ] , c = 0 ; c < this . layers [ this . currentLayer ] . height ; c ++ ) { for ( var d = 0 ; d < this . layers [ this . currentLayer ] . width ; d ++ ) a += "%c " , this . layers [ this . currentLayer ] . data [ c ] [ d ] > 1 ? this . debugMap [ this . layers [ this . currentLayer ] . data [ c ] [ d ] ] ? b . push ( "background: " + this . debugMap [ this . layers [ this . currentLayer ] . data [ c ] [ d ] ] ) : b . push ( "background: #ffffff" ) : b . push ( "background: rgb(0, 0, 0)" ) ; a += "\n" } b [ 0 ] = a , console . log . apply ( console , b ) } , destroy : function ( ) { this . removeAllLayers ( ) , this . data = [ ] , this . game = null } } , c . Tilemap . prototype . constructor = c . Tilemap , Object . defineProperty ( c . Tilemap . prototype , "layer" , { get : function ( ) { return this . layers [ this . currentLayer ] } , set : function ( a ) { a !== this . currentLayer && this . setLayer ( a ) } } ) , c . TilemapLayer = function ( a , b , d , e , f ) { e |= 0 , f |= 0 , c . Sprite . call ( this , a , 0 , 0 ) , this . map = b , this . index = d , this . layer = b . layers [ d ] , this . canvas = PIXI . CanvasPool . create ( this , e , f ) , this . context = this . canvas . getContext ( "2d" ) , this . setTexture ( new PIXI . Texture ( new PIXI . BaseTexture ( this . canvas ) ) ) , this . type = c . TILEMAPLAYER , this . physicsType = c . TILEMAPLAYER , this . renderSettings = { enableScrollDelta : ! 1 , overdrawRatio : . 2 , copyCanvas : null } , this . debug = ! 1 , this . exists = ! 0 , this . debugSettings = { missingImageFill : "rgb(255,255,255)" , debuggedTileOverfill : "rgba(0,255,0,0.4)" , forceFullRedraw : ! 0 , debugAlpha : . 5 , facingEdgeStroke : "rgba(0,255,0,1)" , collidingTileOverfill : "rgba(0,255,0,0.2)" } , this . scrollFactorX = 1 , this . scrollFactorY = 1 , this . dirty = ! 0 , this . rayStepRate = 4 , this . _wrap = ! 1 , this . _mc = { scroll
} } ) , c . Weapon = function ( a , b ) { c . Plugin . call ( this , a , b ) , this . bullets = null , this . autoExpandBulletsGroup = ! 1 , this . autofire = ! 1 , this . shots = 0 , this . fireLimit = 0 , this . fireRate = 100 , this . fireRateVariance = 0 , this . fireFrom = new c . Rectangle ( 0 , 0 , 1 , 1 ) , this . fireAngle = c . ANGLE _UP , this . bulletInheritSpriteSpeed = ! 1 , this . bulletAnimation = "" , this . bulletFrameRandom = ! 1 , this . bulletFrameCycle = ! 1 , this . bulletWorldWrap = ! 1 , this . bulletWorldWrapPadding = 0 , this . bulletAngleOffset = 0 , this . bulletAngleVariance = 0 , this . bulletSpeed = 200 , this . bulletSpeedVariance = 0 , this . bulletLifespan = 0 , this . bulletKillDistance = 0 , this . bulletGravity = new c . Point ( 0 , 0 ) , this . bulletRotateToVelocity = ! 1 , this . bulletKey = "" , this . bulletFrame = "" , this . _bulletClass = c . Bullet , this . _bulletCollideWorldBounds = ! 1 , this . _bulletKillType = c . Weapon . KILL _WORLD _BOUNDS , this . _data = { customBody : ! 1 , width : 0 , height : 0 , offsetX : 0 , offsetY : 0 } , this . bounds = new c . Rectangle , this . bulletBounds = a . world . bounds , this . bulletFrames = [ ] , this . bulletFrameIndex = 0 , this . anims = { } , this . onFire = new c . Signal , this . onKill = new c . Signal , this . onFireLimit = new c . Signal , this . trackedSprite = null , this . trackedPointer = null , this . trackRotation = ! 1 , this . trackOffset = new c . Point , this . _nextFire = 0 , this . _rotatedPoint = new c . Point } , c . Weapon . prototype = Object . create ( c . Plugin . prototype ) , c . Weapon . prototype . constructor = c . Weapon , c . Weapon . KILL _NEVER = 0 , c . Weapon . KILL _LIFESPAN = 1 , c . Weapon . KILL _DISTANCE = 2 , c . Weapon . KILL _WEAPON _BOUNDS = 3 , c . Weapon . KILL _CAMERA _BOUNDS = 4 , c . Weapon . KILL _WORLD _BOUNDS = 5 , c . Weapon . KILL _STATIC _BOUNDS = 6 , c . Weapon . prototype . createBullets = function ( a , b , d , e ) { return void 0 === a && ( a = 1 ) , void 0 === e && ( e = this . game . world ) , this . bullets || ( this . bullets = this . game . add . physicsGroup ( c . Physics . ARCADE , e ) , this . bullets . classType = this . _bulletClass ) , 0 !== a && ( a === - 1 && ( this . autoExpandBulletsGroup = ! 0 , a = 1 ) , this . bullets . createMultiple ( a , b , d ) , this . bullets . setAll ( "data.bulletManager" , this ) , this . bulletKey = b , this . bulletFrame = d ) , this } , c . Weapon . prototype . forEach = function ( a , b ) { return this . bullets . forEachExists ( a , b , arguments ) , this } , c . Weapon . prototype . pauseAll = function ( ) { return this . bullets . setAll ( "body.enable" , ! 1 ) , this } , c . Weapon . prototype . resumeAll = function ( ) { return this . bullets . setAll ( "body.enable" , ! 0 ) , this } , c . Weapon . prototype . killAll = function ( ) { return this . bullets . callAllExists ( "kill" , ! 0 ) , this . bullets . setAll ( "body.enable" , ! 0 ) , this } , c . Weapon . prototype . resetShots = function ( a ) { return this . shots = 0 , void 0 !== a && ( this . fireLimit = a ) , this } , c . Weapon . prototype . destroy = function ( ) { this . parent . remove ( this , ! 1 ) , this . bullets . destroy ( ) , this . game = null , this . parent = null , this . active = ! 1 , this . visible = ! 1 } , c . Weapon . prototype . update = function ( ) { this . _bulletKillType === c . Weapon . KILL _WEAPON _BOUNDS && ( this . trackedSprite ? ( this . trackedSprite . updateTransform ( ) , this . bounds . centerOn ( this . trackedSprite . worldPosition . x , this . trackedSprite . worldPosition . y ) ) : this . trackedPointer && this . bounds . centerOn ( this . trackedPointer . worldX , this . trackedPointer . worldY ) ) , this . autofire && this . fire ( ) } , c . Weapon . prototype . trackSprite = function ( a , b , c , d ) { return void 0 === b && ( b = 0 ) , void 0 === c && ( c = 0 ) , void 0 === d && ( d = ! 1 ) , this . trackedPointer = null , this . trackedSprite = a , this . trackRotation = d , this . trackOffset . set ( b , c ) , this } , c . Weapon . prototype . trackPointer = function ( a , b , c ) { return void 0 === a && ( a = this . game . input . activePointer ) , void 0 === b && ( b = 0 ) , void 0 === c && ( c = 0 ) , this . trackedPointer = a , this . trackedSprite = null , this . trackRotation = ! 1 , this . trackOffset . set ( b , c ) , this } , c . Weapon . prototype . fire = function ( a , b , d ) { if ( this . game . time . now < this . _nextFire || this . fireLimit > 0 && this . shots === this . fireLimit ) return ! 1 ; var e = this . bulletSpeed ; 0 !== this . bulletSpeedVariance && ( e += c . Math . between ( - this . bulletSpeedVariance , this . bulletSpeedVariance ) ) , a ? this . fireFrom . width > 1 ? this . fireFrom . centerOn ( a . x , a . y ) : ( this . fireFrom . x = a . x , this . fireFrom . y = a . y ) : this . trackedSprite ? ( this . trackRotation ? ( this . _rotatedPoint . set ( this . trackedSprite . world . x + this . trackOffset . x , this . trackedSprite . world . y + this . trackOffset . y ) , this . _rotatedPoint . rotate ( this . trackedSprite . world . x , this . trackedSprite . world . y , this . trackedSprite . rotation ) , this . fireFrom . width > 1 ? this . fireFrom . centerOn ( this . _rotatedPoint . x , this . _rotatedPoint . y ) : ( this . fireFrom . x = this . _rotatedPoint . x , t
2014-02-28 09:30:53 +00:00
//# sourceMappingURL=phaser.map