2014-02-11 13:23:54 +00:00
/*! Phaser v1.1.5 | (c) 2014 Photon Storm Ltd. */
! function ( a , b ) { "function" == typeof define && define . amd ? define ( b ) : "object" == typeof exports ? module . exports = b ( ) : a . Phaser = b ( ) } ( this , function ( ) { ! function ( a ) { "object" == typeof exports ? module . exports = a ( ) : "function" == typeof define && define . amd ? define ( a ) : "undefined" != typeof window ? window . p2 = a ( ) : "undefined" != typeof global ? self . p2 = a ( ) : "undefined" != typeof self && ( self . p2 = a ( ) ) } ( function ( ) { return function a ( b , c , d ) { function e ( g , h ) { if ( ! c [ g ] ) { if ( ! b [ g ] ) { var i = "function" == typeof require && require ; if ( ! h && i ) return i ( g , ! 0 ) ; if ( f ) return f ( g , ! 0 ) ; throw new Error ( "Cannot find module '" + g + "'" ) } var j = c [ g ] = { exports : { } } ; b [ g ] [ 0 ] . call ( j . exports , function ( a ) { var c = b [ g ] [ 1 ] [ a ] ; return e ( c ? c : a ) } , j , j . exports , a , b , c , d ) } return c [ g ] . exports } for ( var f = "function" == typeof require && require , g = 0 ; g < d . length ; g ++ ) e ( d [ g ] ) ; return e } ( { 1 : [ function ( a , b , c ) { var d = { } , e = new Float32Array ( [ 1 , 0 , 0 , 1 ] ) ; if ( ! f ) var f = 1e-6 ; d . create = function ( ) { return new Float32Array ( e ) } , d . clone = function ( a ) { var b = new Float32Array ( 4 ) ; return b [ 0 ] = a [ 0 ] , b [ 1 ] = a [ 1 ] , b [ 2 ] = a [ 2 ] , b [ 3 ] = a [ 3 ] , b } , d . copy = function ( a , b ) { return a [ 0 ] = b [ 0 ] , a [ 1 ] = b [ 1 ] , a [ 2 ] = b [ 2 ] , a [ 3 ] = b [ 3 ] , a } , d . identity = function ( a ) { return a [ 0 ] = 1 , a [ 1 ] = 0 , a [ 2 ] = 0 , a [ 3 ] = 1 , a } , d . transpose = function ( a , b ) { if ( a === b ) { var c = b [ 1 ] ; a [ 1 ] = b [ 2 ] , a [ 2 ] = c } else a [ 0 ] = b [ 0 ] , a [ 1 ] = b [ 2 ] , a [ 2 ] = b [ 1 ] , a [ 3 ] = b [ 3 ] ; return a } , d . invert = function ( a , b ) { var c = b [ 0 ] , d = b [ 1 ] , e = b [ 2 ] , f = b [ 3 ] , g = c * f - e * d ; return g ? ( g = 1 / g , a [ 0 ] = f * g , a [ 1 ] = - d * g , a [ 2 ] = - e * g , a [ 3 ] = c * g , a ) : null } , d . adjoint = function ( a , b ) { var c = b [ 0 ] ; return a [ 0 ] = b [ 3 ] , a [ 1 ] = - b [ 1 ] , a [ 2 ] = - b [ 2 ] , a [ 3 ] = c , a } , d . determinant = function ( a ) { return a [ 0 ] * a [ 3 ] - a [ 2 ] * a [ 1 ] } , d . multiply = function ( a , b , c ) { var d = b [ 0 ] , e = b [ 1 ] , f = b [ 2 ] , g = b [ 3 ] , h = c [ 0 ] , i = c [ 1 ] , j = c [ 2 ] , k = c [ 3 ] ; return a [ 0 ] = d * h + e * j , a [ 1 ] = d * i + e * k , a [ 2 ] = f * h + g * j , a [ 3 ] = f * i + g * k , a } , d . mul = d . multiply , d . rotate = function ( a , b , c ) { var d = b [ 0 ] , e = b [ 1 ] , f = b [ 2 ] , g = b [ 3 ] , h = Math . sin ( c ) , i = Math . cos ( c ) ; return a [ 0 ] = d * i + e * h , a [ 1 ] = d * - h + e * i , a [ 2 ] = f * i + g * h , a [ 3 ] = f * - h + g * i , a } , d . scale = function ( a , b , c ) { var d = b [ 0 ] , e = b [ 1 ] , f = b [ 2 ] , g = b [ 3 ] , h = c [ 0 ] , i = c [ 1 ] ; return a [ 0 ] = d * h , a [ 1 ] = e * i , a [ 2 ] = f * h , a [ 3 ] = g * i , a } , d . str = function ( a ) { return "mat2(" + a [ 0 ] + ", " + a [ 1 ] + ", " + a [ 2 ] + ", " + a [ 3 ] + ")" } , "undefined" != typeof c && ( c . mat2 = d ) } , { } ] , 2 : [ function ( a , b , c ) { var d = { } ; if ( ! e ) var e = 1e-6 ; d . create = function ( ) { return new Float32Array ( 2 ) } , d . clone = function ( a ) { var b = new Float32Array ( 2 ) ; return b [ 0 ] = a [ 0 ] , b [ 1 ] = a [ 1 ] , b } , d . fromValues = function ( a , b ) { var c = new Float32Array ( 2 ) ; return c [ 0 ] = a , c [ 1 ] = b , c } , d . copy = function ( a , b ) { return a [ 0 ] = b [ 0 ] , a [ 1 ] = b [ 1 ] , a } , d . set = function ( a , b , c ) { return a [ 0 ] = b , a [ 1 ] = c , a } , d . add = function ( a , b , c ) { return a [ 0 ] = b [ 0 ] + c [ 0 ] , a [ 1 ] = b [ 1 ] + c [ 1 ] , a } , d . subtract = function ( a , b , c ) { return a [ 0 ] = b [ 0 ] - c [ 0 ] , a [ 1 ] = b [ 1 ] - c [ 1 ] , a } , d . sub = d . subtract , d . multiply = function ( a , b , c ) { return a [ 0 ] = b [ 0 ] * c [ 0 ] , a [ 1 ] = b [ 1 ] * c [ 1 ] , a } , d . mul = d . multiply , d . divide = function ( a , b , c ) { return a [ 0 ] = b [ 0 ] / c [ 0 ] , a [ 1 ] = b [ 1 ] / c [ 1 ] , a } , d . div = d . divide , d . min = function ( a , b , c ) { return a [ 0 ] = Math . min ( b [ 0 ] , c [ 0 ] ) , a [ 1 ] = Math . min ( b [ 1 ] , c [ 1 ] ) , a } , d . max = function ( a , b , c ) { return a [ 0 ] = Math . max ( b [ 0 ] , c [ 0 ] ) , a [ 1 ] = Math . max ( b [ 1 ] , c [ 1 ] ) , a } , d . scale = function ( a , b , c ) { return a [ 0 ] = b [ 0 ] * c , a [ 1 ] = b [ 1 ] * c , a } , d . distance = function ( a , b ) { var c = b [ 0 ] - a [ 0 ] , d = b [ 1 ] - a [ 1 ] ; return Math . sqrt ( c * c + d * d ) } , d . dist = d . distance , d . squaredDistance = function ( a , b ) { var c = b [ 0 ] - a [ 0 ] , d = b [ 1 ] - a [ 1 ] ; return c * c + d * d } , d . sqrDist = d . squaredDistance , d . length = function ( a ) { var b = a [ 0 ] , c = a [ 1 ] ; return Math . sqrt ( b * b + c * c ) } , d . len = d . length , d . squaredLength = function ( a ) { var b = a [ 0 ] , c = a [ 1 ] ; return b * b + c * c } , d . sqrLen = d . squaredLength , d . negate = function ( a , b ) { return a [ 0 ] = - b [ 0 ] , a [ 1 ] = - b [ 1 ] , a } , d . normalize = function ( a , b ) { var c = b [ 0 ] , d = b [ 1 ] , e = c * c + d * d ; return e > 0 && ( e = 1 / Math . sqrt ( e ) , a [ 0 ] = b [ 0 ] * e , a [ 1 ] = b [ 1 ] * e ) , a } , d . dot = function ( a , b ) { return a [ 0 ] * b [ 0 ] + a [ 1 ] * b [ 1 ] } , d . cross = function ( a , b , c ) { var d = b [ 0 ] * c [ 1 ] - b [ 1 ] * c [ 0 ] ; return a [ 0 ] = a [ 1 ] = 0 , a [ 2 ] = d , a } , d . lerp = function ( a , b , c , d ) { var e = b [ 0 ] , f = b [ 1 ] ; return a [ 0 ] = e + d * ( c [ 0 ] - e ) , a [ 1 ] = f + d * ( c [ 1 ] - f ) , a } , d . transformMat2 = function ( a , b , c ) { var d = b [ 0 ] , e = b [ 1 ] ; return a [ 0 ] = d * c [ 0 ] + e * c [ 1 ] , a [ 1 ] = d * c [ 2 ] + e * c [ 3 ] , a } , d . forEach = function ( ) { var a = new Float32Array ( 2 ) ; return function ( b , c , d , e , f , g ) { var h , i ; for ( c || ( c = 2 ) , d || ( d = 0 ) , i = e ? Math . min ( e * c + d , b . length ) : b . length , h = d ; i > h ; h += c ) a [ 0 ] = b [ h ] , a [ 1 ] = b [ h + 1 ] , f ( a , a , g ) , b [ h ] = a [ 0 ] , b [ h + 1 ] = a [ 1 ] ; return b } } ( ) , d . str = function ( a ) { return "vec2(" + a [ 0 ] + ", " + a [ 1 ] + ")" } , "undefined" != typeof c && ( c . vec2 =
return this . nodes [ b ] . retrieve ( a ) } return this . children } , d . prototype . findIndex = function ( a ) { var b = this . bounds , c = a . position [ 0 ] - a . boundingRadius > b . x + b . width / 2 ? ! 1 : ! 0 , e = a . position [ 1 ] - a . boundingRadius > b . y + b . height / 2 ? ! 1 : ! 0 ; a instanceof f && ( c = e = ! 1 ) ; var g = d . TOP _LEFT ; return c ? e || ( g = d . BOTTOM _LEFT ) : g = e ? d . TOP _RIGHT : d . BOTTOM _RIGHT , g } , d . prototype . subdivide = function ( ) { var a = this . depth + 1 , b = this . bounds . x , c = this . bounds . y , e = this . bounds . width / 2 , f = this . bounds . height / 2 , g = b + e , h = c + f ; this . nodes [ d . TOP _LEFT ] = new this . classConstructor ( { x : b , y : c , width : e , height : f } , a ) , this . nodes [ d . TOP _RIGHT ] = new this . classConstructor ( { x : g , y : c , width : e , height : f } , a ) , this . nodes [ d . BOTTOM _LEFT ] = new this . classConstructor ( { x : b , y : h , width : e , height : f } , a ) , this . nodes [ d . BOTTOM _RIGHT ] = new this . classConstructor ( { x : g , y : h , width : e , height : f } , a ) } , d . prototype . clear = function ( ) { this . children . length = 0 ; for ( var a = this . nodes . length , b = 0 ; a > b ; b ++ ) this . nodes [ b ] . clear ( ) ; this . nodes . length = 0 } , e . prototype = new d , e . prototype . classConstructor = e , e . prototype . stuckChildren = null , e . prototype . out = [ ] , e . prototype . insert = function ( a ) { if ( this . nodes . length ) { var b = this . findIndex ( a ) , c = this . nodes [ b ] ; return ! ( a instanceof f ) && a . position [ 0 ] - a . boundingRadius >= c . bounds . x && a . position [ 0 ] + a . boundingRadius <= c . bounds . x + c . bounds . width && a . position [ 1 ] - a . boundingRadius >= c . bounds . y && a . position [ 1 ] + a . boundingRadius <= c . bounds . y + c . bounds . height ? this . nodes [ b ] . insert ( a ) : this . stuckChildren . push ( a ) , void 0 } this . children . push ( a ) ; var d = this . children . length ; if ( this . depth < this . maxDepth && d > this . maxChildren ) { this . subdivide ( ) ; for ( var e = 0 ; d > e ; e ++ ) this . insert ( this . children [ e ] ) ; this . children . length = 0 } } , e . prototype . getChildren = function ( ) { return this . children . concat ( this . stuckChildren ) } , e . prototype . retrieve = function ( a ) { var b = this . out ; if ( b . length = 0 , this . nodes . length ) { var c = this . findIndex ( a ) ; b . push . apply ( b , this . nodes [ c ] . retrieve ( a ) ) } return b . push . apply ( b , this . stuckChildren ) , b . push . apply ( b , this . children ) , b } , e . prototype . clear = function ( ) { this . stuckChildren . length = 0 , this . children . length = 0 ; var a = this . nodes . length ; if ( a ) { for ( var b = 0 ; a > b ; b ++ ) this . nodes [ b ] . clear ( ) ; this . nodes . length = 0 } } } , { "../collision/Broadphase" : 10 , "../shapes/Plane" : 42 } ] , 15 : [ function ( a , b ) { function c ( ) { e . apply ( this ) , this . axisList = [ ] , this . world = null , this . axisIndex = 0 ; var a = this . axisList ; this . _addBodyHandler = function ( b ) { a . push ( b . body ) } , this . _removeBodyHandler = function ( b ) { var c = a . indexOf ( b . body ) ; - 1 !== c && a . splice ( c , 1 ) } } var d = ( a ( "../shapes/Circle" ) , a ( "../shapes/Plane" ) , a ( "../shapes/Shape" ) , a ( "../shapes/Particle" ) , a ( "../utils/Utils" ) ) , e = a ( "../collision/Broadphase" ) ; a ( "../math/vec2" ) , b . exports = c , c . prototype = new e , c . prototype . setWorld = function ( a ) { this . axisList . length = 0 , d . appendArray ( this . axisList , a . bodies ) , a . off ( "addBody" , this . _addBodyHandler ) . off ( "removeBody" , this . _removeBodyHandler ) , a . on ( "addBody" , this . _addBodyHandler ) . on ( "removeBody" , this . _removeBodyHandler ) , this . world = a } , c . sortAxisListX = function ( a , b ) { return a . position [ 0 ] - a . boundingRadius - ( b . position [ 0 ] - b . boundingRadius ) } , c . sortAxisListY = function ( a , b ) { return a . position [ 1 ] - a . boundingRadius - ( b . position [ 1 ] - b . boundingRadius ) } , c . prototype . getCollisionPairs = function ( ) { var a , b , d = this . axisList , f = this . result , g = this . axisIndex ; for ( f . length = 0 , d . sort ( 0 === g ? c . sortAxisListX : c . sortAxisListY ) , a = 0 , N = d . length ; a !== N ; a ++ ) { var h = d [ a ] ; for ( b = a + 1 ; N > b ; b ++ ) { var i = d [ b ] ; if ( ! c . checkBounds ( h , i , g ) ) break ; e . boundingRadiusCheck ( h , i ) && f . push ( h , i ) } } return f } , c . checkBounds = function ( a , b , c ) { var d = a . position [ c ] , e = a . boundingRadius , f = b . position [ c ] , g = b . boundingRadius , h = d + e , i = f - g ; return h > i } } , { "../collision/Broadphase" : 10 , "../math/vec2" : 33 , "../shapes/Circle" : 38 , "../shapes/Particle" : 41 , "../shapes/Plane" : 42 , "../shapes/Shape" : 44 , "../utils/Utils" : 49 } ] , 16 : [ function ( a , b ) { function c ( a , b ) { this . equations = [ ] , this . bodyA = a , this . bodyB = b , a && a . wakeUp ( ) , b && b . wakeUp ( ) } b . exports = c } , { } ] , 17 : [ function ( a , b ) { function c ( a , b , c , g ) { d . call ( this , a , b ) , this . distance = c , "undefined" == typeof g && ( g = Number . MAX _VALUE ) ; var h = new e ( a , b , - g , g ) ; this . equations = [ h ] ; var i = f . create ( ) ; h . computeGq = function ( ) { return f . sub ( i , b . position , a . position ) , f . length ( i ) - c } , this . setMaxForce ( g ) } var d = a ( "./Constraint" ) , e = a ( "../equations/Equation" ) , f = a ( "../math/vec2" )
2014-02-12 01:25:36 +00:00
return a * b * b / 2 } , c . prototype . updateBoundingRadius = function ( ) { this . boundingRadius = this . radius } , c . prototype . updateArea = function ( ) { this . area = Math . PI * this . radius * this . radius } , c . prototype . computeAABB = function ( a , b ) { var c = this . radius ; e . set ( a . upperBound , c , c ) , e . set ( a . lowerBound , - c , - c ) , b && ( e . add ( a . lowerBound , a . lowerBound , b ) , e . add ( a . upperBound , a . upperBound , b ) ) } } , { "../math/vec2" : 33 , "./Shape" : 44 } ] , 39 : [ function ( a , b ) { function c ( a ) { this . vertices = a || [ ] ; for ( var b = 0 ; b < this . vertices . length ; b ++ ) { var c = e . fromValues ( ) ; e . copy ( c , this . vertices [ b ] ) , this . vertices [ b ] = c } this . centerOfMass = e . fromValues ( 0 , 0 ) , this . triangles = [ ] , this . vertices . length && ( this . updateTriangles ( ) , this . updateCenterOfMass ( ) ) , this . boundingRadius = 0 , this . updateBoundingRadius ( ) , d . call ( this , d . CONVEX ) } var d = a ( "./Shape" ) , e = a ( "../math/vec2" ) , f = a ( "../math/polyk" ) , g = a ( "poly-decomp" ) ; b . exports = c , c . prototype = new d , c . prototype . updateTriangles = function ( ) { this . triangles . length = 0 ; for ( var a = [ ] , b = 0 ; b < this . vertices . length ; b ++ ) { var c = this . vertices [ b ] ; a . push ( c [ 0 ] , c [ 1 ] ) } for ( var d = f . Triangulate ( a ) , b = 0 ; b < d . length ; b += 3 ) { var e = d [ b ] , g = d [ b + 1 ] , h = d [ b + 2 ] ; this . triangles . push ( [ e , g , h ] ) } } ; { var h = e . create ( ) , i = e . create ( ) , j = e . create ( ) , k = e . create ( ) , l = e . create ( ) ; e . create ( ) , e . create ( ) , e . create ( ) , e . create ( ) } c . prototype . updateCenterOfMass = function ( ) { var a = this . triangles , b = this . vertices , c = this . centerOfMass , d = h , f = j , m = k , n = l , o = i ; e . set ( c , 0 , 0 ) ; for ( var p = 0 , q = 0 ; q !== a . length ; q ++ ) { var r = a [ q ] , f = b [ r [ 0 ] ] , m = b [ r [ 1 ] ] , n = b [ r [ 2 ] ] ; e . centroid ( d , f , m , n ) ; var s = g . Point . area ( f , m , n ) ; p += s , e . scale ( o , d , s ) , e . add ( c , c , o ) } e . scale ( c , c , 1 / p ) } , c . prototype . computeMomentOfInertia = function ( a ) { for ( var b = 0 , c = [ ] , d = 0 ; d < this . vertices . length ; d ++ ) { var h = this . vertices [ d ] ; c . push ( h [ 0 ] , h [ 1 ] ) } var i = f . Triangulate ( c ) ; f . GetArea ( c ) , this . updateArea ( ) ; var j = a / this . area , k = e . create ( ) , l = e . create ( ) , m = e . create ( ) , n = e . create ( ) , o = ( e . create ( ) , e . create ( ) , e . create ( ) ) , p = e . create ( ) ; e . create ( ) ; for ( var d = 0 ; d < i . length ; d += 3 ) { var q = i [ d ] , r = i [ d + 1 ] , s = i [ d + 2 ] ; e . set ( k , c [ 2 * q ] , c [ 2 * q + 1 ] ) , e . set ( l , c [ 2 * r ] , c [ 2 * r + 1 ] ) , e . set ( m , c [ 2 * s ] , c [ 2 * s + 1 ] ) , e . centroid ( n , k , l , m ) , e . sub ( o , m , k ) , e . sub ( p , m , l ) ; var t = g . Point . area ( k , l , m ) , u = e . length ( o ) , v = 2 * t / u , w = t * j , x = w * u * Math . pow ( v , 3 ) / 36 , y = e . squaredLength ( n ) ; b += x + w * y } return b } , c . prototype . updateBoundingRadius = function ( ) { for ( var a = this . vertices , b = 0 , c = 0 ; c !== a . length ; c ++ ) { var d = e . squaredLength ( a [ c ] ) ; d > b && ( b = d ) } this . boundingRadius = Math . sqrt ( b ) } , c . prototype . updateArea = function ( ) { this . updateTriangles ( ) , this . area = 0 ; for ( var a = this . triangles , b = this . vertices , c = 0 ; c !== a . length ; c ++ ) { var d = a [ c ] , e = b [ d [ 0 ] ] , f = b [ d [ 1 ] ] , h = b [ d [ 2 ] ] , i = g . Point . area ( e , f , h ) ; this . area += i } } , c . prototype . computeAABB = function ( a , b , c ) { a . setFromPoints ( this . vertices , b , c ) } } , { "../math/polyk" : 32 , "../math/vec2" : 33 , "./Shape" : 44 , "poly-decomp" : 7 } ] , 40 : [ function ( a , b ) { function c ( a ) { this . length = a , d . call ( this , d . LINE ) } var d = a ( "./Shape" ) , e = a ( "../math/vec2" ) ; b . exports = c , c . prototype = new d , c . prototype . computeMomentOfInertia = function ( a ) { return a * Math . pow ( this . length , 2 ) / 12 } , c . prototype . updateBoundingRadius = function ( ) { this . boundingRadius = this . length / 2 } ; var f = [ e . create ( ) , e . create ( ) ] ; c . prototype . computeAABB = function ( a , b , c ) { var d = this . length ; e . set ( f [ 0 ] , - d / 2 , 0 ) , e . set ( f [ 1 ] , d / 2 , 0 ) , a . setFromPoints ( f , b , c ) } } , { "../math/vec2" : 33 , "./Shape" : 44 } ] , 41 : [ function ( a , b ) { function c ( ) { d . call ( this , d . PARTICLE ) } var d = a ( "./Shape" ) ; b . exports = c , c . prototype = new d , c . prototype . computeMomentOfInertia = function ( ) { return 0 } , c . prototype . updateBoundingRadius = function ( ) { this . boundingRadius = 0 } , c . prototype . computeAABB = function ( a , b ) { this . length , vec2 . copy ( a . lowerBound , b ) , vec2 . copy ( a . upperBound , b ) } } , { "./Shape" : 44 } ] , 42 : [ function ( a , b ) { function c ( ) { d . call ( this , d . PLANE ) } var d = a ( "./Shape" ) , e = a ( "../math/vec2" ) ; a ( "../utils/Utils" ) , b . exports = c , c . prototype = new d , c . prototype . computeMomentOfInertia = function ( ) { return 0 } , c . prototype . updateBoundingRadius = function ( ) { this . boundingRadius = Number . MAX _VALUE } , c . prototype . computeAABB = function ( a , b , c ) { var d = 0 , f = e . set ; "number" == typeof c && ( d = c % ( 2 * Math . PI ) ) , 0 == d ? ( f ( a . lowerBound , - Number . MAX _VALUE , - Number . MAX _VALUE ) , f ( a . upperBound , Number . MAX _VALUE , 0 ) ) : d == Math . PI / 2 ? ( f ( a . lowerBound , 0 , - Number . MAX _VALUE ) , f ( a . upperBound , Number . MAX _VALUE , Number . MAX _VALUE ) ) : d == Math . PI ? ( f ( a . lowerBound , -
} , clampY : function ( a , c ) { return this . y = b . Math . clamp ( this . y , a , c ) , this } , clamp : function ( a , c ) { return this . x = b . Math . clamp ( this . x , a , c ) , this . y = b . Math . clamp ( this . y , a , c ) , this } , clone : function ( a ) { return "undefined" == typeof a ? a = new b . 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 , c ) { return b . Point . distance ( this , a , c ) } , equals : function ( a ) { return a . x == this . x && a . y == this . y } , rotate : function ( a , c , d , e , f ) { return b . Point . rotate ( this , a , c , d , e , f ) } , getMagnitude : function ( ) { return Math . sqrt ( this . x * this . x + this . y * this . y ) } , setMagnitude : function ( a ) { return this . normalize ( ) . multiply ( a , a ) } , normalize : function ( ) { if ( ! this . isZero ( ) ) { var a = this . getMagnitude ( ) ; this . x /= a , this . y /= a } return this } , isZero : function ( ) { return 0 === this . x && 0 === this . y } , toString : function ( ) { return "[{Point (x=" + this . x + " y=" + this . y + ")}]" } } , b . Point . prototype . constructor = b . Point , b . Point . add = function ( a , c , d ) { return "undefined" == typeof d && ( d = new b . Point ) , d . x = a . x + c . x , d . y = a . y + c . y , d } , b . Point . subtract = function ( a , c , d ) { return "undefined" == typeof d && ( d = new b . Point ) , d . x = a . x - c . x , d . y = a . y - c . y , d } , b . Point . multiply = function ( a , c , d ) { return "undefined" == typeof d && ( d = new b . Point ) , d . x = a . x * c . x , d . y = a . y * c . y , d } , b . Point . divide = function ( a , c , d ) { return "undefined" == typeof d && ( d = new b . Point ) , d . x = a . x / c . x , d . y = a . y / c . y , d } , b . Point . equals = function ( a , b ) { return a . x == b . x && a . y == b . y } , b . Point . distance = function ( a , c , d ) { return "undefined" == typeof d && ( d = ! 1 ) , d ? b . Math . distanceRound ( a . x , a . y , c . x , c . y ) : b . Math . distance ( a . x , a . y , c . x , c . y ) } , b . Point . rotate = function ( a , c , d , e , f , g ) { return f = f || ! 1 , g = g || null , f && ( e = b . Math . degToRad ( e ) ) , null === g && ( g = Math . sqrt ( ( c - a . x ) * ( c - a . x ) + ( d - a . y ) * ( d - a . y ) ) ) , a . setTo ( c + g * Math . cos ( e ) , d + g * Math . sin ( e ) ) } , a . Point = b . Point , b . Rectangle = function ( a , b , c , d ) { a = a || 0 , b = b || 0 , c = c || 0 , d = d || 0 , this . x = a , this . y = b , this . width = c , this . height = d } , b . Rectangle . prototype = { offset : function ( a , b ) { return this . x += a , this . y += b , this } , offsetPoint : function ( a ) { return this . offset ( a . x , a . y ) } , setTo : function ( a , b , c , d ) { return this . x = a , this . y = b , this . width = c , this . height = d , this } , floor : function ( ) { this . x = Math . floor ( this . x ) , this . y = Math . floor ( this . y ) } , floorAll : function ( ) { this . x = Math . floor ( this . x ) , this . y = Math . floor ( this . y ) , this . width = Math . floor ( this . width ) , this . height = Math . floor ( this . height ) } , copyFrom : function ( a ) { return this . setTo ( a . x , a . y , a . width , a . height ) } , copyTo : function ( a ) { return a . x = this . x , a . y = this . y , a . width = this . width , a . height = this . height , a } , inflate : function ( a , c ) { return b . Rectangle . inflate ( this , a , c ) } , size : function ( a ) { return b . Rectangle . size ( this , a ) } , clone : function ( a ) { return b . Rectangle . clone ( this , a ) } , contains : function ( a , c ) { return b . Rectangle . contains ( this , a , c ) } , containsRect : function ( a ) { return b . Rectangle . containsRect ( this , a ) } , equals : function ( a ) { return b . Rectangle . equals ( this , a ) } , intersection : function ( a , c ) { return b . Rectangle . intersection ( this , a , c ) } , intersects : function ( a , c ) { return b . Rectangle . intersects ( this , a , c ) } , intersectsRaw : function ( a , c , d , e , f ) { return b . Rectangle . intersectsRaw ( this , a , c , d , e , f ) } , union : function ( a , c ) { return b . Rectangle . union ( this , a , c ) } , toString : function ( ) { return "[{Rectangle (x=" + this . x + " y=" + this . y + " width=" + this . width + " height=" + this . height + " empty=" + this . empty + ")}]" } , get halfWidth ( ) { return Math . round ( this . width / 2 ) } , get halfHeight ( ) { return Math . round ( this . height / 2 ) } , get bottom ( ) { return this . y + this . height } , set bottom ( a ) { this . height = a <= this . y ? 0 : this . y - a } , get bottomRight ( ) { return new b . Point ( this . right , this . bottom ) } , set bottomRight ( a ) { this . right = a . x , this . bottom = a . y } , get left ( ) { return this . x } , set left ( a ) { this . width = a >= this . right ? 0 : this . right - a , this . x = a } , get right ( ) { return this . x + this . width } , set right ( a ) { this . width = a <= this . x ? 0 : this . x + a } , get volume ( ) { return this . width * this . height } , get perimeter ( ) { return 2 * this . width + 2 * this . height } , get centerX ( ) { return this . x + this . halfWidth } , set centerX ( a ) { this . x = a - this . halfWidth } , get centerY ( ) { return this . y + this . halfHeight } , set centerY ( a ) { this . y = a - this . halfHeight } , get top ( ) { return this . y } , set top ( a ) { a >= this . bottom ? ( this . height = 0 , this . y = a ) : this . height = this . bottom - a } , get topLeft ( ) { return new b . Point ( this . x , this . y ) } , set topLeft ( a ) { this . x = a . x , this . y = a . y } , get empty ( ) { return ! this . widt
} , a . PixiShader . prototype . init = function ( ) { var b = this . gl , c = a . compileProgram ( b , this . vertexSrc || a . PixiShader . defaultVertexSrc , this . fragmentSrc ) ; b . useProgram ( c ) , this . uSampler = b . getUniformLocation ( c , "uSampler" ) , this . projectionVector = b . getUniformLocation ( c , "projectionVector" ) , this . offsetVector = b . getUniformLocation ( c , "offsetVector" ) , this . dimensions = b . getUniformLocation ( c , "dimensions" ) , this . aVertexPosition = b . getAttribLocation ( c , "aVertexPosition" ) , this . aTextureCoord = b . getAttribLocation ( c , "aTextureCoord" ) , this . colorAttribute = b . getAttribLocation ( c , "aColor" ) , - 1 === this . colorAttribute && ( this . colorAttribute = 2 ) , this . attributes = [ this . aVertexPosition , this . aTextureCoord , this . colorAttribute ] ; for ( var d in this . uniforms ) this . uniforms [ d ] . uniformLocation = b . getUniformLocation ( c , d ) ; this . initUniforms ( ) , this . program = c } , a . PixiShader . prototype . initUniforms = function ( ) { this . textureCount = 1 ; var a , b = this . gl ; for ( var c in this . uniforms ) { a = this . uniforms [ c ] ; var d = a . type ; "sampler2D" === d ? ( a . _init = ! 1 , null !== a . value && this . initSampler2D ( a ) ) : "mat2" === d || "mat3" === d || "mat4" === d ? ( a . glMatrix = ! 0 , a . glValueLength = 1 , "mat2" === d ? a . glFunc = b . uniformMatrix2fv : "mat3" === d ? a . glFunc = b . uniformMatrix3fv : "mat4" === d && ( a . glFunc = b . uniformMatrix4fv ) ) : ( a . glFunc = b [ "uniform" + d ] , a . glValueLength = "2f" === d || "2i" === d ? 2 : "3f" === d || "3i" === d ? 3 : "4f" === d || "4i" === d ? 4 : 1 ) } } , a . PixiShader . prototype . initSampler2D = function ( a ) { if ( a . value && a . value . baseTexture && a . value . baseTexture . hasLoaded ) { var b = this . gl ; if ( b . activeTexture ( b [ "TEXTURE" + this . textureCount ] ) , b . bindTexture ( b . TEXTURE _2D , a . value . baseTexture . _glTexture ) , a . textureData ) { var c = a . textureData , d = c . magFilter ? c . magFilter : b . LINEAR , e = c . minFilter ? c . minFilter : b . LINEAR , f = c . wrapS ? c . wrapS : b . CLAMP _TO _EDGE , g = c . wrapT ? c . wrapT : b . CLAMP _TO _EDGE , h = c . luminance ? b . LUMINANCE : b . RGBA ; if ( c . repeat && ( f = b . REPEAT , g = b . REPEAT ) , b . pixelStorei ( b . UNPACK _FLIP _Y _WEBGL , ! ! c . flipY ) , c . width ) { var i = c . width ? c . width : 512 , j = c . height ? c . height : 2 , k = c . border ? c . border : 0 ; b . texImage2D ( b . TEXTURE _2D , 0 , h , i , j , k , h , b . UNSIGNED _BYTE , null ) } else b . texImage2D ( b . TEXTURE _2D , 0 , h , b . RGBA , b . UNSIGNED _BYTE , a . value . baseTexture . source ) ; b . texParameteri ( b . TEXTURE _2D , b . TEXTURE _MAG _FILTER , d ) , b . texParameteri ( b . TEXTURE _2D , b . TEXTURE _MIN _FILTER , e ) , b . texParameteri ( b . TEXTURE _2D , b . TEXTURE _WRAP _S , f ) , b . texParameteri ( b . TEXTURE _2D , b . TEXTURE _WRAP _T , g ) } b . uniform1i ( a . uniformLocation , this . textureCount ) , a . _init = ! 0 , this . textureCount ++ } } , a . PixiShader . prototype . syncUniforms = function ( ) { this . textureCount = 1 ; var b , c = this . gl ; for ( var d in this . uniforms ) b = this . uniforms [ d ] , 1 === b . glValueLength ? b . glMatrix === ! 0 ? b . glFunc . call ( c , b . uniformLocation , b . transpose , b . value ) : b . glFunc . call ( c , b . uniformLocation , b . value ) : 2 === b . glValueLength ? b . glFunc . call ( c , b . uniformLocation , b . value . x , b . value . y ) : 3 === b . glValueLength ? b . glFunc . call ( c , b . uniformLocation , b . value . x , b . value . y , b . value . z ) : 4 === b . glValueLength ? b . glFunc . call ( c , b . uniformLocation , b . value . x , b . value . y , b . value . z , b . value . w ) : "sampler2D" === b . type && ( b . _init ? ( c . activeTexture ( c [ "TEXTURE" + this . textureCount ] ) , c . bindTexture ( c . TEXTURE _2D , b . value . baseTexture . _glTextures [ c . id ] || a . createWebGLTexture ( b . value . baseTexture , c ) ) , c . uniform1i ( b . uniformLocation , this . textureCount ) , this . textureCount ++ ) : this . initSampler2D ( b ) ) } , a . PixiShader . prototype . destroy = function ( ) { this . gl . deleteProgram ( this . program ) , this . uniforms = null , this . gl = null , this . attributes = null } , a . PixiShader . defaultVertexSrc = [ "attribute vec2 aVertexPosition;" , "attribute vec2 aTextureCoord;" , "attribute vec2 aColor;" , "uniform vec2 projectionVector;" , "uniform vec2 offsetVector;" , "varying vec2 vTextureCoord;" , "varying vec4 vColor;" , "const vec2 center = vec2(-1.0, 1.0);" , "void main(void) {" , " gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);" , " vTextureCoord = aTextureCoord;" , " vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;" , " vColor = vec4(color * aColor.x, aColor.x);" , "}" ] , a . PixiFastShader = function ( a ) { this . gl = a , this . program = null , this . fragmentSrc = [ "precision lowp float;" , "varying vec2 vTextureCoord;" , "varying float vColor;" , "uniform sampler2D uSampler;" , "void main(void) {" , " gl _FragColor = texture2D ( uSampl
} } , a . WebGLFastSpriteBatch . prototype . stop = function ( ) { this . flush ( ) } , a . WebGLFastSpriteBatch . prototype . start = function ( ) { var b = this . gl ; b . activeTexture ( b . TEXTURE0 ) , b . bindBuffer ( b . ARRAY _BUFFER , this . vertexBuffer ) , b . bindBuffer ( b . ELEMENT _ARRAY _BUFFER , this . indexBuffer ) ; var c = this . renderSession . projection ; b . uniform2f ( this . shader . projectionVector , c . x , c . y ) , b . uniformMatrix3fv ( this . shader . uMatrix , ! 1 , this . matrix ) ; var d = 4 * this . vertSize ; b . vertexAttribPointer ( this . shader . aVertexPosition , 2 , b . FLOAT , ! 1 , d , 0 ) , b . vertexAttribPointer ( this . shader . aPositionCoord , 2 , b . FLOAT , ! 1 , d , 8 ) , b . vertexAttribPointer ( this . shader . aScale , 2 , b . FLOAT , ! 1 , d , 16 ) , b . vertexAttribPointer ( this . shader . aRotation , 1 , b . FLOAT , ! 1 , d , 24 ) , b . vertexAttribPointer ( this . shader . aTextureCoord , 2 , b . FLOAT , ! 1 , d , 28 ) , b . vertexAttribPointer ( this . shader . colorAttribute , 1 , b . FLOAT , ! 1 , d , 36 ) , this . currentBlendMode !== a . blendModes . NORMAL && this . setBlendMode ( a . blendModes . NORMAL ) } , a . WebGLFastSpriteBatch . prototype . setBlendMode = function ( b ) { this . flush ( ) , this . currentBlendMode = b ; var c = a . blendModesWebGL [ this . currentBlendMode ] ; this . gl . blendFunc ( c [ 0 ] , c [ 1 ] ) } , a . WebGLFilterManager = function ( a , b ) { this . transparent = b , this . filterStack = [ ] , this . offsetX = 0 , this . offsetY = 0 , this . setContext ( a ) } , a . WebGLFilterManager . prototype . setContext = function ( a ) { this . gl = a , this . texturePool = [ ] , this . initShaderBuffers ( ) } , a . WebGLFilterManager . prototype . begin = function ( a , b ) { this . renderSession = a , this . defaultShader = a . shaderManager . defaultShader ; var c = this . renderSession . projection ; this . width = 2 * c . x , this . height = 2 * - c . y , this . buffer = b } , a . WebGLFilterManager . prototype . pushFilter = function ( b ) { var c = this . gl , d = this . renderSession . projection , e = this . renderSession . offset ; this . filterStack . push ( b ) ; var f = b . filterPasses [ 0 ] ; this . offsetX += b . target . filterArea . x , this . offsetY += b . target . filterArea . y ; var g = this . texturePool . pop ( ) ; g ? g . resize ( this . width , this . height ) : g = new a . FilterTexture ( this . gl , this . width , this . height ) , c . bindTexture ( c . TEXTURE _2D , g . texture ) , b . target . filterArea = b . target . getBounds ( ) ; var h = b . target . filterArea , i = f . padding ; h . x -= i , h . y -= i , h . width += 2 * i , h . height += 2 * i , h . x < 0 && ( h . x = 0 ) , h . width > this . width && ( h . width = this . width ) , h . y < 0 && ( h . y = 0 ) , h . height > this . height && ( h . height = this . height ) , c . bindFramebuffer ( c . FRAMEBUFFER , g . frameBuffer ) , c . viewport ( 0 , 0 , h . width , h . height ) , d . x = h . width / 2 , d . y = - h . height / 2 , e . x = - h . x , e . y = - h . y , c . uniform2f ( this . defaultShader . projectionVector , h . width / 2 , - h . height / 2 ) , c . uniform2f ( this . defaultShader . offsetVector , - h . x , - h . y ) , c . colorMask ( ! 0 , ! 0 , ! 0 , ! 0 ) , c . clearColor ( 0 , 0 , 0 , 0 ) , c . clear ( c . COLOR _BUFFER _BIT ) , b . _glFilterTexture = g } , a . WebGLFilterManager . prototype . popFilter = function ( ) { var b = this . gl , c = this . filterStack . pop ( ) , d = c . target . filterArea , e = c . _glFilterTexture , f = this . renderSession . projection , g = this . renderSession . offset ; if ( c . filterPasses . length > 1 ) { b . viewport ( 0 , 0 , d . width , d . height ) , b . bindBuffer ( b . ARRAY _BUFFER , this . vertexBuffer ) , this . vertexArray [ 0 ] = 0 , this . vertexArray [ 1 ] = d . height , this . vertexArray [ 2 ] = d . width , this . vertexArray [ 3 ] = d . height , this . vertexArray [ 4 ] = 0 , this . vertexArray [ 5 ] = 0 , this . vertexArray [ 6 ] = d . width , this . vertexArray [ 7 ] = 0 , b . bufferSubData ( b . ARRAY _BUFFER , 0 , this . vertexArray ) , b . bindBuffer ( b . ARRAY _BUFFER , this . uvBuffer ) , this . uvArray [ 2 ] = d . width / this . width , this . uvArray [ 5 ] = d . height / this . height , this . uvArray [ 6 ] = d . width / this . width , this . uvArray [ 7 ] = d . height / this . height , b . bufferSubData ( b . ARRAY _BUFFER , 0 , this . uvArray ) ; var h = e , i = this . texturePool . pop ( ) ; i || ( i = new a . FilterTexture ( this . gl , this . width , this . height ) ) , b . bindFramebuffer ( b . FRAMEBUFFER , i . frameBuffer ) , b . clear ( b . COLOR _BUFFER _BIT ) , b . disable ( b . BLEND ) ; for ( var j = 0 ; j < c . filterPasses . length - 1 ; j ++ ) { var k = c . filterPasses [ j ] ; b . bindFramebuffer ( b . FRAMEBUFFER , i . frameBuffer ) , b . activeTexture ( b . TEXTURE0 ) , b . bindTexture ( b . TEXTURE _2D , h . texture ) , this . applyFilterPass ( k , d , d . width , d . height ) ; var l = h ; h = i , i = l } b . enable ( b . BLEND ) , e = h , this . texturePool . push ( i ) } var m = c . filterPasses [ c . filterPasses . length - 1 ] ; this . offsetX -= d . x , this . offsetY -= d . y ; var n = this . width , o = this . height , p = 0 , q = 0 , r = this . buffer ; if ( 0 === this . filterStack . length ) b . colorMask ( ! 0 , ! 0 , ! 0 , this . transparent ) ; else { var s = this . filterStack [ this . filterStack . length - 1 ] ; d = s . target . filterArea , n = d . width , o = d . height , p = d . x , q = d . y , r = s . _glFilter
return c } , a . Texture . fromCanvas = function ( b , c ) { var d = a . BaseTexture . fromCanvas ( b , c ) ; return new a . Texture ( d ) } , a . Texture . addTextureToCache = function ( b , c ) { a . TextureCache [ c ] = b } , a . Texture . removeTextureFromCache = function ( b ) { var c = a . TextureCache [ b ] ; return a . TextureCache [ b ] = null , c } , a . Texture . frameUpdates = [ ] , a . TextureUvs = function ( ) { this . x0 = 0 , this . y0 = 0 , this . x1 = 0 , this . y1 = 0 , this . x2 = 0 , this . y2 = 0 , this . x3 = 0 , this . y4 = 0 } , a . RenderTexture = function ( b , c , d ) { if ( a . EventTarget . call ( this ) , this . width = b || 100 , this . height = c || 100 , this . frame = new a . Rectangle ( 0 , 0 , this . width , this . height ) , this . baseTexture = new a . BaseTexture , this . baseTexture . width = this . width , this . baseTexture . height = this . height , this . baseTexture . _glTextures = [ ] , this . baseTexture . hasLoaded = ! 0 , this . renderer = d || a . defaultRenderer , this . renderer . type === a . WEBGL _RENDERER ) { var e = this . renderer . gl ; this . textureBuffer = new a . FilterTexture ( e , this . width , this . height ) , this . baseTexture . _glTextures [ e . id ] = this . textureBuffer . texture , this . render = this . renderWebGL , this . projection = new a . Point ( this . width / 2 , - this . height / 2 ) } else this . render = this . renderCanvas , this . textureBuffer = new a . CanvasBuffer ( this . width , this . height ) , this . baseTexture . source = this . textureBuffer . canvas ; a . Texture . frameUpdates . push ( this ) } , a . RenderTexture . prototype = Object . create ( a . Texture . prototype ) , a . RenderTexture . prototype . constructor = a . RenderTexture , a . RenderTexture . prototype . resize = function ( b , c ) { if ( this . width = b , this . height = c , this . frame . width = this . width , this . frame . height = this . height , this . renderer . type === a . WEBGL _RENDERER ) { this . projection . x = this . width / 2 , this . projection . y = - this . height / 2 ; var d = this . renderer . gl ; d . bindTexture ( d . TEXTURE _2D , this . baseTexture . _glTextures [ d . id ] ) , d . texImage2D ( d . TEXTURE _2D , 0 , d . RGBA , this . width , this . height , 0 , d . RGBA , d . UNSIGNED _BYTE , null ) } else this . textureBuffer . resize ( this . width , this . height ) ; a . Texture . frameUpdates . push ( this ) } , a . RenderTexture . prototype . renderWebGL = function ( b , c , d ) { var e = this . renderer . gl ; e . colorMask ( ! 0 , ! 0 , ! 0 , ! 0 ) , e . viewport ( 0 , 0 , this . width , this . height ) , e . bindFramebuffer ( e . FRAMEBUFFER , this . textureBuffer . frameBuffer ) , d && this . textureBuffer . clear ( ) ; var f = b . children , g = b . worldTransform ; b . worldTransform = a . RenderTexture . tempMatrix , b . worldTransform . d = - 1 , b . worldTransform . ty = - 2 * this . projection . y , c && ( b . worldTransform . tx = c . x , b . worldTransform . ty -= c . y ) ; for ( var h = 0 , i = f . length ; i > h ; h ++ ) f [ h ] . updateTransform ( ) ; a . WebGLRenderer . updateTextures ( ) , this . renderer . renderDisplayObject ( b , this . projection , this . textureBuffer . frameBuffer ) , b . worldTransform = g } , a . RenderTexture . prototype . renderCanvas = function ( b , c , d ) { var e = b . children ; b . worldTransform = a . RenderTexture . tempMatrix , c && ( b . worldTransform . tx = c . x , b . worldTransform . ty = c . y ) ; for ( var f = 0 , g = e . length ; g > f ; f ++ ) e [ f ] . updateTransform ( ) ; d && this . textureBuffer . clear ( ) ; var h = this . textureBuffer . context ; this . renderer . renderDisplayObject ( b , h ) , h . setTransform ( 1 , 0 , 0 , 1 , 0 , 0 ) } , a . RenderTexture . tempMatrix = new a . Matrix , b . Camera = function ( a , c , d , e , f , g ) { this . game = a , this . world = a . world , this . id = 0 , this . view = new b . Rectangle ( d , e , f , g ) , this . screenView = new b . Rectangle ( d , e , f , g ) , this . bounds = new b . Rectangle ( d , e , f , g ) , this . deadzone = null , this . visible = ! 0 , this . atLimit = { x : ! 1 , y : ! 1 } , this . target = null , this . _edge = 0 , this . displayObject = null } , b . Camera . FOLLOW _LOCKON = 0 , b . Camera . FOLLOW _PLATFORMER = 1 , b . Camera . FOLLOW _TOPDOWN = 2 , b . Camera . FOLLOW _TOPDOWN _TIGHT = 3 , b . Camera . prototype = { follow : function ( a , c ) { "undefined" == typeof c && ( c = b . Camera . FOLLOW _LOCKON ) , this . target = a ; var d ; switch ( c ) { case b . Camera . FOLLOW _PLATFORMER : var e = this . width / 8 , f = this . height / 3 ; this . deadzone = new b . Rectangle ( ( this . width - e ) / 2 , ( this . height - f ) / 2 - . 25 * f , e , f ) ; break ; case b . Camera . FOLLOW _TOPDOWN : d = Math . max ( this . width , this . height ) / 4 , this . deadzone = new b . Rectangle ( ( this . width - d ) / 2 , ( this . height - d ) / 2 , d , d ) ; break ; case b . Camera . FOLLOW _TOPDOWN _TIGHT : d = Math . max ( this . width , this . height ) / 8 , this . deadzone = new b . Rectangle ( ( this . width - d ) / 2 , ( this . height - d ) / 2 , d , d ) ; break ; case b . Camera . FOLLOW _LOCKON : this . deadzone = null ; break ; default : this . deadzone = null } } , focusOn : function ( a ) { this . setPosition ( Math . round ( a . x - this . view . halfWidth ) , Math . round ( a . y - this . view . halfHeight ) ) } , focusOnXY : function ( a , b ) { this . setPosition ( Math . round ( a - this . view . halfWidth ) , Math . r
} } ) , Object . defineProperty ( b . World . prototype , "randomY" , { get : function ( ) { return this . bounds . y < 0 ? this . game . rnd . integerInRange ( this . bounds . y , this . bounds . height - Math . abs ( this . bounds . y ) ) : this . game . rnd . integerInRange ( this . bounds . y , this . bounds . height ) } } ) , b . Game = function ( a , c , d , e , f , g , h ) { this . id = b . GAMES . push ( this ) - 1 , this . config = null , this . parent = "" , this . width = 800 , this . height = 600 , this . transparent = ! 1 , this . antialias = ! 0 , this . renderer = b . AUTO , this . renderType = b . AUTO , this . state = null , this . _paused = ! 1 , this . _loadComplete = ! 1 , this . isBooted = ! 1 , this . isRunning = ! 1 , this . raf = null , this . add = null , this . cache = null , this . input = null , this . load = null , this . math = null , this . net = null , this . sound = null , this . stage = null , this . time = null , this . tweens = null , this . world = null , this . physics = null , this . rnd = null , this . device = null , this . camera = null , this . canvas = null , this . context = null , this . debug = null , this . particles = null , this . stepping = ! 1 , this . pendingStep = ! 1 , this . stepCount = 0 , 1 === arguments . length && "object" == typeof arguments [ 0 ] ? this . parseConfig ( arguments [ 0 ] ) : ( "undefined" != typeof a && ( this . width = a ) , "undefined" != typeof c && ( this . height = c ) , "undefined" != typeof d && ( this . renderer = d , this . renderType = d ) , "undefined" != typeof e && ( this . parent = e ) , "undefined" != typeof g && ( this . transparent = g ) , "undefined" != typeof h && ( this . antialias = h ) , this . state = new b . StateManager ( this , f ) ) ; var i = this ; return this . _onBoot = function ( ) { return i . boot ( ) } , "complete" === document . readyState || "interactive" === document . readyState ? window . setTimeout ( this . _onBoot , 0 ) : ( document . addEventListener ( "DOMContentLoaded" , this . _onBoot , ! 1 ) , window . addEventListener ( "load" , this . _onBoot , ! 1 ) ) , this } , b . Game . prototype = { parseConfig : function ( a ) { this . config = a , a . width && ( this . width = this . parseDimension ( a . width , 0 ) ) , a . height && ( this . height = this . parseDimension ( a . height , 1 ) ) , a . renderer && ( this . renderer = a . renderer , this . renderType = a . renderer ) , a . parent && ( this . parent = a . parent ) , a . transparent && ( this . transparent = a . transparent ) , a . antialias && ( this . antialias = a . antialias ) ; var c = null ; a . state && ( c = a . state ) , this . state = new b . StateManager ( this , c ) } , parseDimension : function ( a , b ) { var c = 0 , d = 0 ; return "string" == typeof a ? "%" === a . substr ( - 1 ) ? ( c = parseInt ( a , 10 ) / 100 , d = 0 === b ? window . innerWidth * c : window . innerHeight * c ) : d = parseInt ( a , 10 ) : d = a , d } , boot : function ( ) { this . isBooted || ( document . body ? ( document . removeEventListener ( "DOMContentLoaded" , this . _onBoot ) , window . removeEventListener ( "load" , this . _onBoot ) , this . onPause = new b . Signal , this . onResume = new b . Signal , this . isBooted = ! 0 , this . device = new b . Device , this . math = b . Math , this . rnd = new b . RandomDataGenerator ( [ ( Date . now ( ) * Math . random ( ) ) . toString ( ) ] ) , this . stage = new b . Stage ( this , this . width , this . height ) , this . setUpRenderer ( ) , this . world = new b . World ( this ) , this . add = new b . GameObjectFactory ( this ) , this . cache = new b . Cache ( this ) , this . load = new b . Loader ( this ) , this . time = new b . Time ( this ) , this . tweens = new b . TweenManager ( this ) , this . input = new b . Input ( this ) , this . sound = new b . SoundManager ( this ) , this . physics = new b . Physics . World ( this ) , this . particles = new b . Particles ( this ) , this . plugins = new b . PluginManager ( this , this ) , this . net = new b . Net ( this ) , this . debug = new b . Utils . Debug ( this ) , this . time . boot ( ) , this . stage . boot ( ) , this . world . boot ( ) , this . input . boot ( ) , this . sound . boot ( ) , this . state . boot ( ) , this . load . onLoadComplete . add ( this . loadComplete , this ) , this . showDebugHeader ( ) , this . isRunning = ! 0 , this . _loadComplete = ! 1 , this . raf = new b . RequestAnimationFrame ( this ) , this . raf . start ( ) ) : window . setTimeout ( this . _onBoot , 20 ) ) } , showDebugHeader : function ( ) { var a = b . DEV _VERSION , c = "Canvas" , d = "HTML Audio" ; if ( this . renderType == b . WEBGL ? c = "WebGL" : this . renderType == b . HEADLESS && ( c = "Headless" ) , this . device . webAudio && ( d = "WebAudio" ) , this . device . chrome ) { var e = [ "%c %c %c Phaser v" + a + " - Renderer: " + c + " - Audio: " + d + " %c %c " , "background: #00bff3" , "background: #0072bc" , "color: #ffffff; background: #003471" , "background: #0072bc" , "background: #00bff3" ] ; console . log . apply ( console , e ) } else console . log ( "Phaser v" + a + " - Renderer: " + c + " - Audio: " + d ) } , setUpRenderer : function ( ) { if ( this . renderType === b . HEADLESS || this . renderType === b . CANVAS || this . renderType === b . AUTO && this . device . webGL === ! 1 ) { if ( ! this . device . canvas ) throw new Error ( " Phaser . Game - cannot create Canvas or WebGL context ,
} , consumeDocumentTouches : function ( ) { this . _documentTouchMove = function ( a ) { a . preventDefault ( ) } , document . addEventListener ( "touchmove" , this . _documentTouchMove , ! 1 ) } , onTouchStart : function ( a ) { if ( this . event = a , this . touchStartCallback && this . touchStartCallback . call ( this . callbackContext , a ) , ! this . game . input . disabled && ! this . disabled ) { this . preventDefault && a . preventDefault ( ) ; for ( var b = 0 ; b < a . changedTouches . length ; b ++ ) this . game . input . startPointer ( a . changedTouches [ b ] ) } } , onTouchCancel : function ( a ) { if ( this . event = a , this . touchCancelCallback && this . touchCancelCallback . call ( this . callbackContext , a ) , ! this . game . input . disabled && ! this . disabled ) { this . preventDefault && a . preventDefault ( ) ; for ( var b = 0 ; b < a . changedTouches . length ; b ++ ) this . game . input . stopPointer ( a . changedTouches [ b ] ) } } , onTouchEnter : function ( a ) { this . event = a , this . touchEnterCallback && this . touchEnterCallback . call ( this . callbackContext , a ) , this . game . input . disabled || this . disabled || this . preventDefault && a . preventDefault ( ) } , onTouchLeave : function ( a ) { this . event = a , this . touchLeaveCallback && this . touchLeaveCallback . call ( this . callbackContext , a ) , this . preventDefault && a . preventDefault ( ) } , onTouchMove : function ( a ) { this . event = a , this . touchMoveCallback && this . touchMoveCallback . call ( this . callbackContext , a ) , this . preventDefault && a . preventDefault ( ) ; for ( var b = 0 ; b < a . changedTouches . length ; b ++ ) this . game . input . updatePointer ( a . changedTouches [ b ] ) } , onTouchEnd : function ( a ) { this . event = a , this . touchEndCallback && this . touchEndCallback . call ( this . callbackContext , a ) , this . preventDefault && a . preventDefault ( ) ; for ( var b = 0 ; b < a . changedTouches . length ; b ++ ) this . game . input . stopPointer ( a . changedTouches [ b ] ) } , stop : function ( ) { this . game . device . touch && ( this . game . stage . canvas . removeEventListener ( "touchstart" , this . _onTouchStart ) , this . game . stage . canvas . removeEventListener ( "touchmove" , this . _onTouchMove ) , this . game . stage . canvas . removeEventListener ( "touchend" , this . _onTouchEnd ) , this . game . stage . canvas . removeEventListener ( "touchenter" , this . _onTouchEnter ) , this . game . stage . canvas . removeEventListener ( "touchleave" , this . _onTouchLeave ) , this . game . stage . canvas . removeEventListener ( "touchcancel" , this . _onTouchCancel ) ) } } , b . Touch . prototype . constructor = b . Touch , b . Gamepad = function ( a ) { this . game = a , this . _gamepads = [ new b . SinglePad ( a , this ) , new b . SinglePad ( a , this ) , new b . SinglePad ( a , this ) , new b . SinglePad ( a , this ) ] , this . _gamepadIndexMap = { } , this . _rawPads = [ ] , this . _active = ! 1 , this . disabled = ! 1 , this . _gamepadSupportAvailable = ! ! navigator . webkitGetGamepads || ! ! navigator . webkitGamepads || - 1 != navigator . userAgent . indexOf ( "Firefox/" ) , this . _prevRawGamepadTypes = [ ] , this . _prevTimestamps = [ ] , this . callbackContext = this , this . onConnectCallback = null , this . onDisconnectCallback = null , this . onDownCallback = null , this . onUpCallback = null , this . onAxisCallback = null , this . onFloatCallback = null , this . _ongamepadconnected = null , this . _gamepaddisconnected = null } , b . Gamepad . prototype = { addCallbacks : function ( a , b ) { "undefined" != typeof b && ( this . onConnectCallback = "function" == typeof b . onConnect ? b . onConnect : this . onConnectCallback , this . onDisconnectCallback = "function" == typeof b . onDisconnect ? b . onDisconnect : this . onDisconnectCallback , this . onDownCallback = "function" == typeof b . onDown ? b . onDown : this . onDownCallback , this . onUpCallback = "function" == typeof b . onUp ? b . onUp : this . onUpCallback , this . onAxisCallback = "function" == typeof b . onAxis ? b . onAxis : this . onAxisCallback , this . onFloatCallback = "function" == typeof b . onFloat ? b . onFloat : this . onFloatCallback ) } , start : function ( ) { this . _active = ! 0 ; var a = this ; this . _ongamepadconnected = function ( b ) { var c = b . gamepad ; a . _rawPads . push ( c ) , a . _gamepads [ c . index ] . connect ( c ) } , window . addEventListener ( "gamepadconnected" , this . _ongamepadconnected , ! 1 ) , this . _ongamepaddisconnected = function ( b ) { var c = b . gamepad ; for ( var d in a . _rawPads ) a . _rawPads [ d ] . index === c . index && a . _rawPads . splice ( d , 1 ) ; a . _gamepads [ c . index ] . disconnect ( ) } , window . addEventListener ( "gamepaddisconnected" , this . _ongamepaddisconnected , ! 1 ) } , update : function ( ) { this . _pollGamepads ( ) ; for ( var a = 0 ; a < this . _gamepads . length ; a ++ ) this . _gamepads [ a ] . _connected && this . _gamepads [ a ] . pollStatus ( ) } , _pollGamepads : function ( ) { var a = navigator . webkitGetGamepads && navigator . webkitGetGamepads ( ) || navigator . webkitGamepads ; if ( a ) { this . _rawP
} , circle : function ( a , b , c ) { return this . arc ( a , b , c , 0 , 2 * Math . PI ) , this } , clearRect : function ( a , b , c , d ) { return this . _dirty = ! 0 , this . context . clearRect ( a , b , c , d ) , this } , clip : function ( ) { return this . _dirty = ! 0 , this . context . clip ( ) , this } , closePath : function ( ) { return this . _dirty = ! 0 , this . context . closePath ( ) , this } , createLinearGradient : function ( a , b , c , d ) { return this . context . createLinearGradient ( a , b , c , d ) } , createRadialGradient : function ( a , b , c , d , e , f ) { return this . context . createRadialGradient ( a , b , c , d , e , f ) } , ellipse : function ( a , b , c , d ) { var e = . 5522848 , f = c / 2 * e , g = d / 2 * e , h = a + c , i = b + d , j = a + c / 2 , k = b + d / 2 ; return this . moveTo ( a , k ) , this . bezierCurveTo ( a , k - g , j - f , b , j , b ) , this . bezierCurveTo ( j + f , b , h , k - g , h , k ) , this . bezierCurveTo ( h , k + g , j + f , i , j , i ) , this . bezierCurveTo ( j - f , i , a , k + g , a , k ) , this } , fill : function ( ) { return this . _dirty = ! 0 , this . context . fill ( ) , this } , fillRect : function ( a , b , c , d ) { return this . _dirty = ! 0 , this . context . fillRect ( a , b , c , d ) , this } , fillStyle : function ( a ) { return this . context . fillStyle = a , this } , font : function ( a ) { return this . context . font = a , this } , globalAlpha : function ( a ) { return this . context . globalAlpha = a , this } , globalCompositeOperation : function ( a ) { return this . context . globalCompositeOperation = a , this } , lineCap : function ( a ) { return this . context . lineCap = a , this } , lineDashOffset : function ( a ) { return this . context . lineDashOffset = a , this } , lineJoin : function ( a ) { return this . context . lineJoin = a , this } , lineWidth : function ( a ) { return this . context . lineWidth = a , this } , miterLimit : function ( a ) { return this . context . miterLimit = a , this } , lineTo : function ( a , b ) { return this . _dirty = ! 0 , this . context . lineTo ( a , b ) , this } , moveTo : function ( a , b ) { return this . context . moveTo ( a , b ) , this } , quadraticCurveTo : function ( a , b , c , d ) { return this . _dirty = ! 0 , this . context . quadraticCurveTo ( a , b , c , d ) , this } , rect : function ( a , b , c , d ) { return this . _dirty = ! 0 , this . context . rect ( a , b , c , d ) , this } , restore : function ( ) { return this . _dirty = ! 0 , this . context . restore ( ) , this } , rotate : function ( a ) { return this . _dirty = ! 0 , this . context . rotate ( a ) , this } , setStrokeStyle : function ( a , b , c , d , e ) { return "undefined" == typeof a && ( a = 1 ) , "undefined" == typeof b && ( b = "butt" ) , "undefined" == typeof c && ( c = "miter" ) , "undefined" == typeof d && ( d = 10 ) , e = ! 1 , this . lineWidth ( a ) , this . lineCap ( b ) , this . lineJoin ( c ) , this . miterLimit ( d ) , this } , save : function ( ) { return this . _dirty = ! 0 , this . context . save ( ) , this } , scale : function ( a , b ) { return this . _dirty = ! 0 , this . context . scale ( a , b ) , this } , scrollPathIntoView : function ( ) { return this . _dirty = ! 0 , this . context . scrollPathIntoView ( ) , this } , stroke : function ( ) { return this . _dirty = ! 0 , this . context . stroke ( ) , this } , strokeRect : function ( a , b , c , d ) { return this . _dirty = ! 0 , this . context . strokeRect ( a , b , c , d ) , this } , strokeStyle : function ( a ) { return this . context . strokeStyle = a , this } , render : function ( ) { this . _dirty && ( this . game . renderType == b . WEBGL && a . texturesToUpdate . push ( this . baseTexture ) , this . _dirty = ! 1 ) } } , b . BitmapData . prototype . constructor = b . BitmapData , b . BitmapData . prototype . mt = b . BitmapData . prototype . moveTo , b . BitmapData . prototype . lt = b . BitmapData . prototype . lineTo , b . BitmapData . prototype . at = b . BitmapData . prototype . arcTo , b . BitmapData . prototype . bt = b . BitmapData . prototype . bezierCurveTo , b . BitmapData . prototype . qt = b . BitmapData . prototype . quadraticCurveTo , b . BitmapData . prototype . a = b . BitmapData . prototype . arc , b . BitmapData . prototype . r = b . BitmapData . prototype . rect , b . BitmapData . prototype . cp = b . BitmapData . prototype . closePath , b . BitmapData . prototype . c = b . BitmapData . prototype . clear , b . BitmapData . prototype . f = b . BitmapData . prototype . beginFill , b . BitmapData . prototype . lf = b . BitmapData . prototype . beginLinearGradientFill , b . BitmapData . prototype . ss = b . BitmapData . prototype . setStrokeStyle , b . BitmapData . prototype . s = b . BitmapData . prototype . beginStroke , b . BitmapData . prototype . ls = b . BitmapData . prototype . beginLinearGradientStroke , b . BitmapData . prototype . rs = b . BitmapData . prototype . beginRadialGradientStroke , b . BitmapData . prototype . dr = b . BitmapData . prototype . rect , b . BitmapData . prototype . dc = b . BitmapData . prototype . circle , b . BitmapData . prototype . de = b . BitmapData . prototype . ellipse , b . Sprite = function ( c , d , e , f , g ) { d = d || 0 , e = e || 0 , f = f || null , g = g || null , this . game = c , this . exists = ! 0 , this . name = "" , this . type = b . SPRITE , this . events = new b . Events ( this ) , this . animations = new b . AnimationManager ( this ) , this . key = f , this . _frame = 0 , thi
var e = this ; window . addEventListener ( "orientationchange" , function ( a ) { return e . checkOrientation ( a ) } , ! 1 ) , window . addEventListener ( "resize" , function ( a ) { return e . checkResize ( a ) } , ! 1 ) , document . addEventListener ( "webkitfullscreenchange" , function ( a ) { return e . fullScreenChange ( a ) } , ! 1 ) , document . addEventListener ( "mozfullscreenchange" , function ( a ) { return e . fullScreenChange ( a ) } , ! 1 ) , document . addEventListener ( "fullscreenchange" , function ( a ) { return e . fullScreenChange ( a ) } , ! 1 ) } , b . StageScaleMode . EXACT _FIT = 0 , b . StageScaleMode . NO _SCALE = 1 , b . StageScaleMode . SHOW _ALL = 2 , b . StageScaleMode . prototype = { startFullScreen : function ( a ) { if ( ! this . isFullScreen ) { "undefined" != typeof a && b . Canvas . setSmoothingEnabled ( this . game . context , a ) ; var c = this . game . canvas ; this . _width = this . width , this . _height = this . height , c . requestFullScreen ? c . requestFullScreen ( ) : c . mozRequestFullScreen ? c . parentNode . mozRequestFullScreen ( ) : c . webkitRequestFullScreen && c . webkitRequestFullScreen ( Element . ALLOW _KEYBOARD _INPUT ) } } , stopFullScreen : function ( ) { document . cancelFullScreen ? document . cancelFullScreen ( ) : document . mozCancelFullScreen ? document . mozCancelFullScreen ( ) : document . webkitCancelFullScreen && document . webkitCancelFullScreen ( ) } , fullScreenChange : function ( a ) { this . event = a , this . isFullScreen ? this . game . stage . fullScreenScaleMode === b . StageScaleMode . EXACT _FIT ? ( this . game . stage . canvas . style . width = "100%" , this . game . stage . canvas . style . height = "100%" , this . setMaximum ( ) , this . game . input . scale . setTo ( this . game . width / this . width , this . game . height / this . height ) , this . aspectRatio = this . width / this . height , this . scaleFactor . x = this . game . width / this . width , this . scaleFactor . y = this . game . height / this . height ) : this . game . stage . fullScreenScaleMode === b . StageScaleMode . SHOW _ALL && ( this . game . stage . scale . setShowAll ( ) , this . game . stage . scale . refresh ( ) ) : ( this . game . stage . canvas . style . width = this . game . width + "px" , this . game . stage . canvas . style . height = this . game . height + "px" , this . width = this . _width , this . height = this . _height , this . game . input . scale . setTo ( this . game . width / this . width , this . game . height / this . height ) , this . aspectRatio = this . width / this . height , this . scaleFactor . x = this . game . width / this . width , this . scaleFactor . y = this . game . height / this . height ) } , forceOrientation : function ( b , c , d ) { "undefined" == typeof c && ( c = ! 1 ) , this . forceLandscape = b , this . forcePortrait = c , "undefined" != typeof d && ( ( null == d || this . game . cache . checkImageKey ( d ) === ! 1 ) && ( d = "__default" ) , this . orientationSprite = new a . Sprite ( a . TextureCache [ d ] ) , this . orientationSprite . anchor . x = . 5 , this . orientationSprite . anchor . y = . 5 , this . orientationSprite . position . x = this . game . width / 2 , this . orientationSprite . position . y = this . game . height / 2 , this . checkOrientationState ( ) , this . incorrectOrientation ? ( this . orientationSprite . visible = ! 0 , this . game . world . visible = ! 1 ) : ( this . orientationSprite . visible = ! 1 , this . game . world . visible = ! 0 ) , this . game . stage . _stage . addChild ( this . orientationSprite ) ) } , checkOrientationState : function ( ) { this . incorrectOrientation ? ( this . forceLandscape && window . innerWidth > window . innerHeight || this . forcePortrait && window . innerHeight > window . innerWidth ) && ( this . game . paused = ! 1 , this . incorrectOrientation = ! 1 , this . leaveIncorrectOrientation . dispatch ( ) , this . orientationSprite && ( this . orientationSprite . visible = ! 1 , this . game . world . visible = ! 0 ) , this . refresh ( ) ) : ( this . forceLandscape && window . innerWidth < window . innerHeight || this . forcePortrait && window . innerHeight < window . innerWidth ) && ( this . game . paused = ! 0 , this . incorrectOrientation = ! 0 , this . enterIncorrectOrientation . dispatch ( ) , this . orientationSprite && this . orientationSprite . visible === ! 1 && ( this . orientationSprite . visible = ! 0 , this . game . world . visible = ! 1 ) , this . refresh ( ) ) } , checkOrientation : function ( a ) { this . event = a , this . orientation = window . orientation , this . isLandscape ? this . enterLandscape . dispatch ( this . orientation , ! 0 , ! 1 ) : this . enterPortrait . dispatch ( this . orientation , ! 1 , ! 0 ) , this . game . stage . scaleMode !== b . StageScaleMode . NO _SCALE && this . refresh ( ) } , checkResize : function ( a ) { this . event = a , this . orientation = window . outerWidth > window . outerHeight ? 90 : 0 , this . isLandscape ? this . enterLandscape . dispatch ( this . orientation , ! 0 , ! 1 ) : this . enterPortrait . dispatch ( this . orientation , ! 1 , ! 0 ) , this . game . stage . scaleMode !== b . StageScaleMode . NO _SCALE && this . refresh ( ) , this . checkOrientati
return a * a * ( ( b + 1 ) * a - b ) } , Out : function ( a ) { var b = 1.70158 ; return -- a * a * ( ( b + 1 ) * a + b ) + 1 } , InOut : function ( a ) { var b = 2.5949095 ; return ( a *= 2 ) < 1 ? . 5 * a * a * ( ( b + 1 ) * a - b ) : . 5 * ( ( a -= 2 ) * a * ( ( b + 1 ) * a + b ) + 2 ) } } , Bounce : { In : function ( a ) { return 1 - b . Easing . Bounce . Out ( 1 - a ) } , Out : function ( a ) { return 1 / 2.75 > a ? 7.5625 * a * a : 2 / 2.75 > a ? 7.5625 * ( a -= 1.5 / 2.75 ) * a + . 75 : 2.5 / 2.75 > a ? 7.5625 * ( a -= 2.25 / 2.75 ) * a + . 9375 : 7.5625 * ( a -= 2.625 / 2.75 ) * a + . 984375 } , InOut : function ( a ) { return . 5 > a ? . 5 * b . Easing . Bounce . In ( 2 * a ) : . 5 * b . Easing . Bounce . Out ( 2 * a - 1 ) + . 5 } } } , b . Time = function ( a ) { this . game = a , this . time = 0 , this . now = 0 , this . elapsed = 0 , this . pausedTime = 0 , this . fps = 0 , this . fpsMin = 1e3 , this . fpsMax = 0 , this . msMin = 1e3 , this . msMax = 0 , this . physicsElapsed = 0 , this . frames = 0 , this . pauseDuration = 0 , this . timeToCall = 0 , this . lastTime = 0 , this . events = new b . Timer ( this . game , ! 1 ) , this . _started = 0 , this . _timeLastSecond = 0 , this . _pauseStarted = 0 , this . _justResumed = ! 1 , this . _timers = [ ] , this . _len = 0 , this . _i = 0 , this . game . onPause . add ( this . gamePaused , this ) , this . game . onResume . add ( this . gameResumed , this ) } , b . Time . prototype = { boot : function ( ) { this . events . start ( ) } , create : function ( a ) { "undefined" == typeof a && ( a = ! 0 ) ; var c = new b . Timer ( this . game , a ) ; return this . _timers . push ( c ) , c } , removeAll : function ( ) { for ( var a = 0 ; a < this . _timers . length ; a ++ ) this . _timers [ a ] . destroy ( ) ; this . _timers = [ ] } , update : function ( a ) { if ( this . now = a , this . _justResumed ) { this . time = this . now , this . _justResumed = ! 1 , this . events . resume ( ) ; for ( var b = 0 ; b < this . _timers . length ; b ++ ) this . _timers [ b ] . resume ( ) } if ( this . timeToCall = this . game . math . max ( 0 , 16 - ( a - this . lastTime ) ) , this . elapsed = this . now - this . time , this . msMin = this . game . math . min ( this . msMin , this . elapsed ) , this . msMax = this . game . math . max ( this . msMax , this . elapsed ) , this . frames ++ , this . now > this . _timeLastSecond + 1e3 && ( this . fps = Math . round ( 1e3 * this . frames / ( this . now - this . _timeLastSecond ) ) , this . fpsMin = this . game . math . min ( this . fpsMin , this . fps ) , this . fpsMax = this . game . math . max ( this . fpsMax , this . fps ) , this . _timeLastSecond = this . now , this . frames = 0 ) , this . time = this . now , this . lastTime = a + this . timeToCall , this . physicsElapsed = 1 * ( this . elapsed / 1e3 ) , this . physicsElapsed > . 05 && ( this . physicsElapsed = . 05 ) , this . game . paused ) this . pausedTime = this . now - this . _pauseStarted ; else for ( this . events . update ( this . now ) , this . _i = 0 , this . _len = this . _timers . length ; this . _i < this . _len ; ) this . _timers [ this . _i ] . update ( this . now ) ? this . _i ++ : ( this . _timers . splice ( this . _i , 1 ) , this . _len -- ) } , gamePaused : function ( ) { this . _pauseStarted = this . now , this . events . pause ( ) ; for ( var a = 0 ; a < this . _timers . length ; a ++ ) this . _timers [ a ] . pause ( ) } , gameResumed : function ( ) { this . time = Date . now ( ) , this . pauseDuration = this . pausedTime , this . _justResumed = ! 0 } , totalElapsedSeconds : function ( ) { return . 001 * ( this . now - this . _started ) } , elapsedSince : function ( a ) { return this . now - a } , elapsedSecondsSince : function ( a ) { return . 001 * ( this . now - a ) } , reset : function ( ) { this . _started = this . now } } , b . Time . prototype . constructor = b . Time , b . Timer = function ( a , c ) { "undefined" == typeof c && ( c = ! 0 ) , this . game = a , this . running = ! 1 , this . autoDestroy = c , this . expired = ! 1 , this . events = [ ] , this . onComplete = new b . Signal , this . nextTick = 0 , this . paused = ! 1 , this . _started = 0 , this . _pauseStarted = 0 , this . _now = 0 , this . _len = 0 , this . _i = 0 } , b . Timer . MINUTE = 6e4 , b . Timer . SECOND = 1e3 , b . Timer . HALF = 500 , b . Timer . QUARTER = 250 , b . Timer . prototype = { create : function ( a , c , d , e , f , g ) { var h = a ; this . running && ( h += this . _now ) ; var i = new b . TimerEvent ( this , a , h , d , c , e , f , g ) ; return this . events . push ( i ) , this . order ( ) , this . expired = ! 1 , i } , add : function ( a , b , c ) { return this . create ( a , ! 1 , 0 , b , c , Array . prototype . splice . call ( arguments , 3 ) ) } , repeat : function ( a , b , c , d ) { return this . create ( a , ! 1 , b , c , d , Array . prototype . splice . call ( arguments , 4 ) ) } , loop : function ( a , b , c ) { return this . create ( a , ! 0 , 0 , b , c , Array . prototype . splice . call ( arguments , 3 ) ) } , start : function ( ) { this . _started = this . game . time . now , this . running = ! 0 } , stop : function ( ) { this . running = ! 1 , this . events . length = 0 } , remove : function ( a ) { for ( var b = 0 ; b < this . events . length ; b ++ ) if ( this . events [ b ] === a ) return this . events [ b ] . pendingDelete = ! 0 , ! 0 ; return ! 1 } , order : function ( ) { this . events . length > 0 && ( this . events . sort ( this . sortHandler ) , this . nextTick = this . events [ 0 ] . tick ) } , sortHandler : function ( a , b ) { return a . tick < b . tick ? - 1 : a . tick > b . tick ? 1 : 0 } , update : function ( a ) { if ( this . paused ) return ! 0 ; for ( this . _now = a - this . _started , this . _len
} ; else { if ( a . format !== b . Tilemap . CSV ) throw new Error ( "Phaser.Loader. Invalid Tilemap format: " + a . format ) ; this . _xhr . onload = function ( ) { return c . csvLoadComplete ( c . _fileIndex ) } } this . _xhr . onerror = function ( ) { return c . dataLoadError ( c . _fileIndex ) } , this . _xhr . send ( ) ; break ; case "text" : case "script" : this . _xhr . open ( "GET" , this . baseURL + a . url , ! 0 ) , this . _xhr . responseType = "text" , this . _xhr . onload = function ( ) { return c . fileComplete ( c . _fileIndex ) } , this . _xhr . onerror = function ( ) { return c . fileError ( c . _fileIndex ) } , this . _xhr . send ( ) ; break ; case "binary" : this . _xhr . open ( "GET" , this . baseURL + a . url , ! 0 ) , this . _xhr . responseType = "arraybuffer" , this . _xhr . onload = function ( ) { return c . fileComplete ( c . _fileIndex ) } , this . _xhr . onerror = function ( ) { return c . fileError ( c . _fileIndex ) } , this . _xhr . send ( ) } } , getAudioURL : function ( a ) { var b ; "string" == typeof a && ( a = [ a ] ) ; for ( var c = 0 ; c < a . length ; c ++ ) if ( b = a [ c ] . toLowerCase ( ) , b = b . substr ( ( Math . max ( 0 , b . lastIndexOf ( "." ) ) || 1 / 0 ) + 1 ) , this . game . device . canPlayAudio ( b ) ) return a [ c ] ; return null } , fileError : function ( a ) { this . _fileList [ a ] . loaded = ! 0 , this . _fileList [ a ] . error = ! 0 , this . onFileError . dispatch ( this . _fileList [ a ] . key , this . _fileList [ a ] ) , console . warn ( "Phaser.Loader error loading file: " + this . _fileList [ a ] . key + " from URL " + this . _fileList [ a ] . url ) , this . nextFile ( a , ! 1 ) } , fileComplete : function ( a ) { if ( ! this . _fileList [ a ] ) return console . warn ( "Phaser.Loader fileComplete invalid index " + a ) , void 0 ; var c = this . _fileList [ a ] ; c . loaded = ! 0 ; var d = ! 0 , e = this ; switch ( c . type ) { case "image" : this . game . cache . addImage ( c . key , c . url , c . data ) ; break ; case "spritesheet" : this . game . cache . addSpriteSheet ( c . key , c . url , c . data , c . frameWidth , c . frameHeight , c . frameMax , c . margin , c . spacing ) ; break ; case "textureatlas" : if ( null == c . atlasURL ) this . game . cache . addTextureAtlas ( c . key , c . url , c . data , c . atlasData , c . format ) ; else { if ( d = ! 1 , this . _xhr . open ( "GET" , this . baseURL + c . atlasURL , ! 0 ) , this . _xhr . responseType = "text" , c . format == b . Loader . TEXTURE _ATLAS _JSON _ARRAY || c . format == b . Loader . TEXTURE _ATLAS _JSON _HASH ) this . _xhr . onload = function ( ) { return e . jsonLoadComplete ( a ) } ; else { if ( c . format != b . Loader . TEXTURE _ATLAS _XML _STARLING ) throw new Error ( "Phaser.Loader. Invalid Texture Atlas format: " + c . format ) ; this . _xhr . onload = function ( ) { return e . xmlLoadComplete ( a ) } } this . _xhr . onerror = function ( ) { return e . dataLoadError ( a ) } , this . _xhr . send ( ) } break ; case "bitmapfont" : null == c . xmlURL ? this . game . cache . addBitmapFont ( c . key , c . url , c . data , c . xmlData ) : ( d = ! 1 , this . _xhr . open ( "GET" , this . baseURL + c . xmlURL , ! 0 ) , this . _xhr . responseType = "text" , this . _xhr . onload = function ( ) { return e . xmlLoadComplete ( a ) } , this . _xhr . onerror = function ( ) { return e . dataLoadError ( a ) } , this . _xhr . send ( ) ) ; break ; case "audio" : if ( this . game . sound . usingWebAudio ) { if ( c . data = this . _xhr . response , this . game . cache . addSound ( c . key , c . url , c . data , ! 0 , ! 1 ) , c . autoDecode ) { this . game . cache . updateSound ( g , "isDecoding" , ! 0 ) ; var f = this , g = c . key ; this . game . sound . context . decodeAudioData ( c . data , function ( a ) { a && ( f . game . cache . decodedSound ( g , a ) , f . game . sound . onSoundDecode . dispatch ( g , f . game . cache . getSound ( g ) ) ) } ) } } else c . data . removeEventListener ( "canplaythrough" , b . GAMES [ this . game . id ] . load . fileComplete ) , this . game . cache . addSound ( c . key , c . url , c . data , ! 1 , ! 0 ) ; break ; case "text" : c . data = this . _xhr . responseText , this . game . cache . addText ( c . key , c . url , c . data ) ; break ; case "script" : c . data = document . createElement ( "script" ) , c . data . language = "javascript" , c . data . type = "text/javascript" , c . data . defer = ! 1 , c . data . text = this . _xhr . responseText , document . head . appendChild ( c . data ) ; break ; case "binary" : c . data = c . callback ? c . callback . call ( c . callbackContext , c . key , this . _xhr . response ) : this . _xhr . response , this . game . cache . addBinary ( c . key , c . data ) } d && this . nextFile ( a , ! 0 ) } , jsonLoadComplete : function ( a ) { if ( ! this . _fileList [ a ] ) return console . warn ( "Phaser.Loader jsonLoadComplete invalid index " + a ) , void 0 ; var b = this . _fileList [ a ] , c = JSON . parse ( this . _xhr . responseText ) ; b . loaded = ! 0 , "tilemap" === b . type ? this . game . cache . addTilemap ( b . key , b . url , c , b . format ) : this . game . cache . addTextureAtlas ( b . key , b . url , b . data , c , b . format ) , this . nextFile ( a , ! 0 ) } , csvLoadComplete : function ( a ) { if ( ! this . _fileList [ a ] ) return console . warn ( "Phaser.Loader csvLoadComplete invalid index " + a ) , void 0 ; var b = this . _fileList [ a ] , c = this . _xhr . responseText ; b . loaded = ! 0 , this . game . cache .
return e } , interpolateColor : function ( a , c , d , e , f ) { "undefined" == typeof f && ( f = 255 ) ; var g = b . Color . getRGB ( a ) , h = b . Color . getRGB ( c ) , 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 b . Color . getColor32 ( f , i , j , k ) } , interpolateColorWithRGB : function ( a , c , d , e , f , g ) { var h = b . Color . getRGB ( a ) , i = ( c - h . red ) * g / f + h . red , j = ( d - h . green ) * g / f + h . green , k = ( e - h . blue ) * g / f + h . blue ; return b . Color . getColor ( i , j , k ) } , interpolateRGB : function ( a , c , d , e , f , g , h , i ) { var j = ( e - a ) * i / h + a , k = ( f - c ) * i / h + c , l = ( g - d ) * i / h + d ; return b . Color . getColor ( j , k , l ) } , getRandomColor : function ( a , c , d ) { if ( "undefined" == typeof a && ( a = 0 ) , "undefined" == typeof c && ( c = 255 ) , "undefined" == typeof d && ( d = 255 ) , c > 255 ) return b . Color . getColor ( 255 , 255 , 255 ) ; if ( a > c ) return b . Color . getColor ( 255 , 255 , 255 ) ; var e = a + Math . round ( Math . random ( ) * ( c - a ) ) , f = a + Math . round ( Math . random ( ) * ( c - a ) ) , g = a + Math . round ( Math . random ( ) * ( c - a ) ) ; return b . Color . getColor32 ( d , e , f , g ) } , getRGB : function ( a ) { return { alpha : a >>> 24 , red : 255 & a >> 16 , green : 255 & a >> 8 , blue : 255 & a } } , getWebRGB : function ( a ) { var b = ( a >>> 24 ) / 255 , c = 255 & a >> 16 , d = 255 & a >> 8 , e = 255 & a ; return "rgba(" + c . toString ( ) + "," + d . toString ( ) + "," + e . toString ( ) + "," + b . toString ( ) + ")" } , getAlpha : function ( a ) { return a >>> 24 } , getAlphaFloat : function ( a ) { return ( a >>> 24 ) / 255 } , getRed : function ( a ) { return 255 & a >> 16 } , getGreen : function ( a ) { return 255 & a >> 8 } , getBlue : function ( a ) { return 255 & a } } , b . Physics = { } , b . Physics . World = function ( a ) { this . game = a , this . bounds = null , p2 . World . call ( this , { gravity : [ 0 , 0 ] } ) , this . setBoundsToWorld ( ! 0 , ! 0 , ! 0 , ! 0 ) } , b . Physics . World . prototype = Object . create ( p2 . World . prototype ) , b . Physics . World . prototype . constructor = b . Physics . World , b . Physics . World . prototype . setBoundsToWorld = function ( a , b , c , d ) { this . setBounds ( this . game . world . bounds . x , this . game . world . bounds . y , this . game . world . bounds . width , this . game . world . bounds . height , a , b , c , d ) } , b . Physics . World . prototype . setBounds = function ( a , b , c , d , e , f , g , h ) { "undefined" == typeof e && ( e = ! 0 ) , "undefined" == typeof f && ( f = ! 0 ) , "undefined" == typeof g && ( g = ! 0 ) , "undefined" == typeof h && ( h = ! 0 ) , null !== this . bounds && this . removeBody ( this . bounds ) ; var i = c / 2 , j = d / 2 , k = i + a , l = j + b ; this . bounds = new p2 . Body ( { mass : 0 , position : [ this . game . math . px2p ( k ) , this . game . math . px2p ( l ) ] } ) , e && this . bounds . addShape ( new p2 . Plane , [ this . game . math . px2p ( - i ) , 0 ] , 1.5707963267948966 ) , f && this . bounds . addShape ( new p2 . Plane , [ this . game . math . px2p ( i ) , 0 ] , - 1.5707963267948966 ) , g && this . bounds . addShape ( new p2 . Plane , [ 0 , this . game . math . px2p ( - j ) ] , - 3.141592653589793 ) , h && this . bounds . addShape ( new p2 . Plane , [ 0 , this . game . math . px2p ( j ) ] ) , this . addBody ( this . bounds ) } , b . Physics . World . prototype . update = function ( ) { this . step ( 1 / 60 ) } , b . Physics . PointProxy = function ( a ) { this . destination = a } , b . Physics . PointProxy . prototype . constructor = b . Physics . PointProxy , Object . defineProperty ( b . Physics . PointProxy . prototype , "x" , { get : function ( ) { return this . destination [ 0 ] } , set : function ( a ) { this . destination [ 0 ] = a } } ) , Object . defineProperty ( b . Physics . PointProxy . prototype , "y" , { get : function ( ) { return this . destination [ 1 ] } , set : function ( a ) { this . destination [ 1 ] = a } } ) , b . Physics . Body = function ( a ) { this . sprite = a , this . game = a . game , this . offset = new b . Point , this . shape = null , this . data = new p2 . Body ( { position : [ this . px2p ( a . x ) , this . px2p ( a . y ) ] , mass : 1 } ) , this . velocity = new b . Physics . PointProxy ( this . data . velocity ) , this . force = new b . Physics . PointProxy ( this . data . force ) , this . setRectangle ( a . width , a . height , 0 , 0 ) , this . game . physics . addBody ( this . data ) } , b . Physics . Body . prototype = { addShape : function ( a , b , c , d ) { return "undefined" == typeof b && ( b = 0 ) , "undefined" == typeof c && ( c = 0 ) , "undefined" == typeof d && ( d = 0 ) , this . data . addShape ( a , [ this . px2p ( b ) , this . px2p ( c ) ] , d ) } , adjustCenterOfMass : function ( ) { this . data . adjustCenterOfMass ( ) } , removeShape : function ( a ) { return this . data . removeShape ( a ) } , setZeroForce : function ( ) { this . data . setZeroForce ( ) } , setZeroRotation : function ( ) { ship . body . angularVelocity = 0 } , setZeroVelocity : function ( ) { this . data . velocity [ 0 ] = 0 , this . data . velocity [ 1 ] = 0 } , setZeroDamping : function ( ) { this . data . damping = 0 , this . data . angularDamping = 0 } , rotateLeft : function ( a ) { this . data . angularVelocity = this . px2p ( a ) } , rotateRight : function ( a ) { this . data . angularVelocity = this . px2p ( - a ) } , thrust : function ( a ) { var b = this . px2p ( - a ) , c = this . data . angle + Math . PI / 2 ; this . data . force [ 0 ] += b * Math . co
} , parse : function ( a , c ) { var d = a . cache . getTilemapData ( c ) ; return d ? d . format === b . Tilemap . CSV ? this . parseCSV ( d . data ) : d . format === b . Tilemap . TILED _JSON ? this . parseTiledJSON ( d . data ) : void 0 : { layers : [ ] , objects : [ ] , images : [ ] , tilesets : [ ] } } , parseCSV : function ( a ) { a = a . trim ( ) ; for ( var b = [ ] , c = a . split ( "\n" ) , d = c . length , e = 0 , f = 0 ; f < c . length ; f ++ ) { b [ f ] = [ ] ; for ( var g = c [ f ] . split ( "," ) , h = 0 ; h < g . length ; h ++ ) b [ f ] [ h ] = parseInt ( g [ h ] , 10 ) ; 0 === e && ( e = g . length ) } return [ { name : "csv" , width : e , height : d , alpha : 1 , visible : ! 0 , indexes : [ ] , tileMargin : 0 , tileSpacing : 0 , data : b } ] } , parseTiledJSON : function ( a ) { if ( "orthogonal" !== a . orientation ) return console . warn ( "TilemapParser.parseTiledJSON: Only orthogonal map types are supported in this version of Phaser" ) , null ; var c = { } ; c . width = a . width , c . height = a . height , c . tileWidth = a . tilewidth , c . tileHeight = a . tileheight , c . orientation = a . orientation , c . version = a . version , c . properties = a . properties , c . widthInPixels = c . width * c . tileWidth , c . heightInPixels = c . height * c . tileHeight ; for ( var d = [ ] , e = 0 ; e < a . layers . length ; e ++ ) if ( "tilelayer" === a . layers [ e ] . type ) { var f = { name : a . layers [ e ] . name , x : a . layers [ e ] . x , y : a . layers [ e ] . y , width : a . layers [ e ] . width , height : a . layers [ e ] . height , widthInPixels : a . layers [ e ] . width * a . tilewidth , heightInPixels : a . layers [ e ] . height * a . tileheight , alpha : a . layers [ e ] . opacity , visible : a . layers [ e ] . visible , properties : { } , indexes : [ ] , callbacks : [ ] } ; a . layers [ e ] . properties && ( f . properties = a . layers [ e ] . properties ) ; for ( var g = 0 , h = [ ] , i = [ ] , j = 0 , k = a . layers [ e ] . data . length ; k > j ; j ++ ) a . layers [ e ] . data [ j ] > 0 ? h . push ( new b . Tile ( f , a . layers [ e ] . data [ j ] , g , i . length , a . tilewidth , a . tileheight ) ) : h . push ( null ) , g ++ , g === a . layers [ e ] . width && ( i . push ( h ) , g = 0 , h = [ ] ) ; f . data = i , d . push ( f ) } c . layers = d ; for ( var l = [ ] , e = 0 ; e < a . layers . length ; e ++ ) if ( "imagelayer" === a . layers [ e ] . type ) { var m = { name : a . layers [ e ] . name , image : a . layers [ e ] . image , x : a . layers [ e ] . x , y : a . layers [ e ] . y , alpha : a . layers [ e ] . opacity , visible : a . layers [ e ] . visible , properties : { } } ; a . layers [ e ] . properties && ( m . properties = a . layers [ e ] . properties ) , l . push ( m ) } c . images = l ; for ( var n = { } , e = 0 ; e < a . layers . length ; e ++ ) if ( "objectgroup" === a . layers [ e ] . type ) { n [ a . layers [ e ] . name ] = [ ] ; for ( var o = 0 , k = a . layers [ e ] . objects . length ; k > o ; o ++ ) if ( a . layers [ e ] . objects [ o ] . gid ) { var p = { gid : a . layers [ e ] . objects [ o ] . gid , name : a . layers [ e ] . objects [ o ] . name , x : a . layers [ e ] . objects [ o ] . x , y : a . layers [ e ] . objects [ o ] . y , visible : a . layers [ e ] . objects [ o ] . visible , properties : a . layers [ e ] . objects [ o ] . properties } ; n [ a . layers [ e ] . name ] . push ( p ) } } c . objects = n ; for ( var q = [ ] , e = 0 ; e < a . tilesets . length ; e ++ ) { var r = a . tilesets [ e ] , s = new b . Tileset ( r . name , r . firstgid , r . tilewidth , r . tileheight , r . margin , r . spacing , r . properties ) ; r . tileproperties && ( s . tileProperties = r . tileproperties ) , s . rows = ( r . imageheight - r . margin ) / ( r . tileheight + r . spacing ) , s . columns = ( r . imagewidth - r . margin ) / ( r . tilewidth + r . spacing ) , s . total = s . rows * s . columns , q . push ( s ) } c . tilesets = q , c . tiles = [ ] ; for ( var e = 0 ; e < c . tilesets . length ; e ++ ) for ( var r = c . tilesets [ e ] , g = r . tileMargin , t = r . tileMargin , u = 0 , v = 0 , w = 0 , j = r . firstgid ; j < r . firstgid + r . total && ( c . tiles [ j ] = [ g , t , e ] , g += r . tileWidth + r . tileSpacing , u ++ , u !== r . total ) && ( v ++ , v !== r . columns || ( g = r . tileMargin , t += r . tileHeight + r . tileSpacing , v = 0 , w ++ , w !== r . rows ) ) ; j ++ ) ; return c } } , b . Tileset = function ( a , b , c , d , e , f , g ) { this . name = a , this . firstgid = b , this . tileWidth = c , this . tileHeight = d , this . tileMargin = e , this . tileSpacing = f , this . properties = g , this . image = null , this . rows = 0 , this . columns = 0 , this . total = 0 } , b . Tileset . prototype = { setSpacing : function ( a , b ) { this . tileMargin = a , this . tileSpacing = b } } , b . Tileset . prototype . constructor = b . Tileset , b } ) ;