2014-02-11 13:23:54 +00:00
/*! Phaser v1.1.5 | (c) 2014 Photon Storm Ltd. */
2014-02-17 11:27:31 +00:00
! 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 =
for ( var d = 0 ; c > d ; d ++ ) this . insert ( this . children [ d ] ) ; this . children . length = 0 } } , d . prototype . retrieve = function ( a ) { if ( this . nodes . length ) { var b = this . findIndex ( a ) ; 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 = fu
} var d = a ( "./Shape" ) , e = a ( "../math/vec2" ) ; b . exports = c , c . prototype = new d , c . prototype . computeMomentOfInertia = function ( a ) { var b = this . radius ; return a * b * b / 2 } , c . prototype . updateBoundingRadius = function ( ) { this . boundingRadius = this . radius } , c . prototype . updateArea = function ( ) { this . area = Math . PI * this . radius * this . radius } , c . prototype . computeAABB = function ( a , b ) { var c = this . radius ; e . set ( a . upperBound , c , c ) , e . set ( a . lowerBound , - c , - c ) , b && ( e . add ( a . lowerBound , a . lowerBound , b ) , e . add ( a . upperBound , a . upperBound , b ) ) } } , { "../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 } if ( this . centerOfMass = e . fromValues ( 0 , 0 ) , this . triangles = [ ] , this . vertices . length && ( this . updateTriangles ( ) , this . updateCenterOfMass ( ) ) , this . boundingRadius = 0 , d . call ( this , d . CONVEX ) , this . updateBoundingRadius ( ) , this . updateArea ( ) , this . area < 0 ) throw new Error ( "Convex vertices must be given in conter-clockwise winding." ) } var d = a ( "./Shape" ) , e = a ( "../math/vec2" ) , f = a ( "../math/polyk" ) ; 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 g = e . create ( ) , h = e . create ( ) , i = e . create ( ) , j = e . create ( ) , k = e . create ( ) ; e . create ( ) , e . create ( ) , e . create ( ) , e . create ( ) } c . prototype . updateCenterOfMass = function ( ) { var a = this . triangles , b = this . vertices , d = this . centerOfMass , f = g , l = i , m = j , n = k , o = h ; e . set ( d , 0 , 0 ) ; for ( var p = 0 , q = 0 ; q !== a . length ; q ++ ) { var r = a [ q ] , l = b [ r [ 0 ] ] , m = b [ r [ 1 ] ] , n = b [ r [ 2 ] ] ; e . centroid ( f , l , m , n ) ; var s = c . triangleArea ( l , m , n ) ; p += s , e . scale ( o , f , s ) , e . add ( d , d , o ) } e . scale ( d , d , 1 / p ) } , c . prototype . computeMomentOfInertia = function ( a ) { for ( var b = 0 , c = 0 , d = this . vertices . length , f = d - 1 , g = 0 ; d > g ; f = g , g ++ ) { var h = this . vertices [ f ] , i = this . vertices [ g ] , j = Math . abs ( e . crossLength ( h , i ) ) , k = e . dot ( i , i ) + e . dot ( i , h ) + e . dot ( h , h ) ; b += j * k , c += j } return a / 6 * ( b / c ) } , c . prototype . updateBoundingRadius = function ( ) { for ( var a = this . vertices , b = 0 , c = 0 ; c !== a . length ; c ++ ) { var d = e . squaredLength ( a [ c ] ) ; d > b && ( b = d ) } this . boundingRadius = Math . sqrt ( b ) } , c . triangleArea = function ( a , b , c ) { return . 5 * ( ( b [ 0 ] - a [ 0 ] ) * ( c [ 1 ] - a [ 1 ] ) - ( c [ 0 ] - a [ 0 ] ) * ( b [ 1 ] - a [ 1 ] ) ) } , c . prototype . updateArea = function ( ) { this . updateTriangles ( ) , this . area = 0 ; for ( var a = this . triangles , b = this . vertices , d = 0 ; d !== a . length ; d ++ ) { var e = a [ d ] , f = b [ e [ 0 ] ] , g = b [ e [ 1 ] ] , h = b [ e [ 2 ] ] , i = c . triangleArea ( f , g , h ) ; this . area += i } } , c . prototype . computeAABB = function ( a , b , c ) { a . setFromPoints ( this . vertices , b , c ) } } , { "../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 , - Number . MAX _VALUE , 0 ) , f ( a . upperBou
return d + e <= a . radius * a . radius } return ! 1 } , b . Circle . equals = function ( a , b ) { return a . x == b . x && a . y == b . y && a . diameter == b . diameter } , b . Circle . intersects = function ( a , c ) { return b . Math . distance ( a . x , a . y , c . x , c . y ) <= a . radius + c . radius } , b . Circle . circumferencePoint = function ( a , c , d , e ) { return "undefined" == typeof d && ( d = ! 1 ) , "undefined" == typeof e && ( e = new b . Point ) , d === ! 0 && ( c = b . Math . radToDeg ( c ) ) , e . x = a . x + a . radius * Math . cos ( c ) , e . y = a . y + a . radius * Math . sin ( c ) , e } , b . Circle . intersectsRectangle = function ( a , b ) { var c = Math . abs ( a . x - b . x - b . halfWidth ) , d = b . halfWidth + a . radius ; if ( c > d ) return ! 1 ; var e = Math . abs ( a . y - b . y - b . halfHeight ) , f = b . halfHeight + a . radius ; if ( e > f ) return ! 1 ; if ( c <= b . halfWidth || e <= b . halfHeight ) return ! 0 ; var g = c - b . halfWidth , h = e - b . halfHeight , i = g * g , j = h * h , k = a . radius * a . radius ; return k >= i + j } , a . Circle = b . Circle , b . Point = function ( a , b ) { a = a || 0 , b = b || 0 , this . x = a , this . y = b } , b . 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 , c ) { return this . x = b . Math . clamp ( this . x , a , c ) , this } , 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 ) } , i
return u >= 0 && v >= 0 && 1 > u + v } , a . PolyK . _convex = function ( a , b , c , d , e , f , g ) { return ( b - d ) * ( e - c ) + ( c - a ) * ( f - d ) >= 0 === g } , a . initDefaultShaders = function ( ) { } , a . CompileVertexShader = function ( b , c ) { return a . _CompileShader ( b , c , b . VERTEX _SHADER ) } , a . CompileFragmentShader = function ( b , c ) { return a . _CompileShader ( b , c , b . FRAGMENT _SHADER ) } , a . _CompileShader = function ( a , b , c ) { var d = b . join ( "\n" ) , e = a . createShader ( c ) ; return a . shaderSource ( e , d ) , a . compileShader ( e ) , a . getShaderParameter ( e , a . COMPILE _STATUS ) ? e : ( window . console . log ( a . getShaderInfoLog ( e ) ) , null ) } , a . compileProgram = function ( b , c , d ) { var e = a . CompileFragmentShader ( b , d ) , f = a . CompileVertexShader ( b , c ) , g = b . createProgram ( ) ; return b . attachShader ( g , f ) , b . attachShader ( g , e ) , b . linkProgram ( g ) , b . getProgramParameter ( g , b . LINK _STATUS ) || window . console . log ( "Could not initialise shaders" ) , g } , a . PixiShader = function ( a ) { this . gl = a , this . program = null , this . fragmentSrc = [ "precision lowp float;" , "varying vec2 vTextureCoord;" , "varying vec4 vColor;" , "uniform sampler2D uSampler;" , "void main(void) {" , " gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;" , "}" ] , this . textureCount = 0 , this . attributes = [ ] , this . init ( ) } , 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 . bas
i = 4 * this . currentBatchSize * this . vertSize , j [ i ++ ] = f , j [ i ++ ] = h , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x0 , j [ i ++ ] = b . y1 , j [ i ++ ] = a . alpha , j [ i ++ ] = e , j [ i ++ ] = h , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x1 , j [ i ++ ] = b . y1 , j [ i ++ ] = a . alpha , j [ i ++ ] = e , j [ i ++ ] = g , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x2 , j [ i ++ ] = b . y2 , j [ i ++ ] = a . alpha , j [ i ++ ] = f , j [ i ++ ] = g , j [ i ++ ] = a . position . x , j [ i ++ ] = a . position . y , j [ i ++ ] = a . scale . x , j [ i ++ ] = a . scale . y , j [ i ++ ] = a . rotation , j [ i ++ ] = b . x3 , j [ i ++ ] = b . y3 , j [ i ++ ] = a . alpha , this . currentBatchSize ++ , this . currentBatchSize >= this . size && this . flush ( ) } } , a . WebGLFastSpriteBatch . prototype . flush = function ( ) { if ( 0 !== this . currentBatchSize ) { var b = this . gl ; if ( this . currentBaseTexture . _glTextures [ b . id ] || a . createWebGLTexture ( this . currentBaseTexture , b ) , b . bindTexture ( b . TEXTURE _2D , this . currentBaseTexture . _glTextures [ b . id ] ) , this . currentBatchSize > . 5 * this . size ) b . bufferSubData ( b . ARRAY _BUFFER , 0 , this . vertices ) ; else { var c = this . vertices . subarray ( 0 , 4 * this . currentBatchSize * this . vertSize ) ; b . bufferSubData ( b . ARRAY _BUFFER , 0 , c ) } b . drawElements ( b . TRIANGLES , 6 * this . currentBatchSize , b . UNSIGNED _SHORT , 0 ) , this . currentBatchSize = 0 , this . renderSession . drawCount ++ } } , 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 ) , t
} , a . BaseTexture . fromImage = function ( b , c , d ) { var e = a . BaseTextureCache [ b ] ; if ( c = ! c , ! e ) { var f = new Image ; c && ( f . crossOrigin = "" ) , f . src = b , e = new a . BaseTexture ( f , d ) , e . imageUrl = b , a . BaseTextureCache [ b ] = e } return e } , a . BaseTexture . fromCanvas = function ( b , c ) { b . _pixiId || ( b . _pixiId = "canvas_" + a . TextureCacheIdGenerator ++ ) ; var d = a . BaseTextureCache [ b . _pixiId ] ; return d || ( d = new a . BaseTexture ( b , c ) , a . BaseTextureCache [ b . _pixiId ] = d ) , d } , a . TextureCache = { } , a . FrameCache = { } , a . TextureCacheIdGenerator = 0 , a . Texture = function ( b , c ) { if ( a . EventTarget . call ( this ) , c || ( this . noFrame = ! 0 , c = new a . Rectangle ( 0 , 0 , 1 , 1 ) ) , b instanceof a . Texture && ( b = b . baseTexture ) , this . baseTexture = b , this . frame = c , this . trim = null , this . scope = this , this . _uvs = null , b . hasLoaded ) this . noFrame && ( c = new a . Rectangle ( 0 , 0 , b . width , b . height ) ) , this . setFrame ( c ) ; else { var d = this ; b . addEventListener ( "loaded" , function ( ) { d . onBaseTextureLoaded ( ) } ) } } , a . Texture . prototype . constructor = a . Texture , a . Texture . prototype . onBaseTextureLoaded = function ( ) { var b = this . baseTexture ; b . removeEventListener ( "loaded" , this . onLoaded ) , this . noFrame && ( this . frame = new a . Rectangle ( 0 , 0 , b . width , b . height ) ) , this . setFrame ( this . frame ) , this . scope . dispatchEvent ( { type : "update" , content : this } ) } , a . Texture . prototype . destroy = function ( a ) { a && this . baseTexture . destroy ( ) } , a . Texture . prototype . setFrame = function ( b ) { if ( this . frame = b , this . width = b . width , this . height = b . height , b . x + b . width > this . baseTexture . width || b . y + b . height > this . baseTexture . height ) throw new Error ( "Texture Error: frame does not fit inside the base Texture dimensions " + this ) ; this . updateFrame = ! 0 , a . Texture . frameUpdates . push ( this ) } , a . Texture . prototype . _updateWebGLuvs = function ( ) { this . _uvs || ( this . _uvs = new a . TextureUvs ) ; var b = this . frame , c = this . baseTexture . width , d = this . baseTexture . height ; this . _uvs . x0 = b . x / c , this . _uvs . y0 = b . y / d , this . _uvs . x1 = ( b . x + b . width ) / c , this . _uvs . y1 = b . y / d , this . _uvs . x2 = ( b . x + b . width ) / c , this . _uvs . y2 = ( b . y + b . height ) / d , this . _uvs . x3 = b . x / c , this . _uvs . y3 = ( b . y + b . height ) / d } , a . Texture . fromImage = function ( b , c , d ) { var e = a . TextureCache [ b ] ; return e || ( e = new a . Texture ( a . BaseTexture . fromImage ( b , c , d ) ) , a . TextureCache [ b ] = e ) , e } , a . Texture . fromFrame = function ( b ) { var c = a . TextureCache [ b ] ; if ( ! c ) throw new Error ( 'The frameId "' + b + '" does not exist in the texture cache ' ) ; 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
} , b . Group . prototype . getRandom = function ( a , b ) { return 0 === this . children . length ? null : ( a = a || 0 , b = b || this . children . length , this . game . math . getRandom ( this . children , a , b ) ) } , b . Group . prototype . remove = function ( a ) { return 0 !== this . children . length ? ( a . events && a . events . onRemovedFromGroup . dispatch ( a , this ) , this . removeChild ( a ) , this . cursor === a && this . next ( ) , ! 0 ) : void 0 } , b . Group . prototype . removeAll = function ( ) { if ( 0 !== this . children . length ) { do this . children [ 0 ] . events && this . children [ 0 ] . events . onRemovedFromGroup . dispatch ( this . children [ 0 ] , this ) , this . removeChild ( this . children [ 0 ] ) ; while ( this . children . length > 0 ) ; this . cursor = null } } , b . Group . prototype . removeBetween = function ( a , b ) { if ( 0 !== this . children . length ) { if ( a > b || 0 > a || b > this . children . length ) return ! 1 ; for ( var c = a ; b > c ; c ++ ) this . children [ c ] . events && this . children [ c ] . events . onRemovedFromGroup . dispatch ( this . children [ c ] , this ) , this . removeChild ( this . children [ c ] ) , this . cursor === child && ( this . cursor = null ) } } , b . Group . prototype . destroy = function ( a ) { if ( "undefined" == typeof a && ( a = ! 1 ) , a ) { if ( this . children . length > 0 ) do this . children [ 0 ] . group && this . children [ 0 ] . destroy ( ) ; while ( this . children . length > 0 ) } else this . removeAll ( ) ; this . parent . removeChild ( this ) , this . game = null , this . exists = ! 1 , this . cursor = null } , Object . defineProperty ( b . Group . prototype , "total" , { get : function ( ) { return this . iterate ( "exists" , ! 0 , b . Group . RETURN _TOTAL ) } } ) , Object . defineProperty ( b . Group . prototype , "length" , { get : function ( ) { return this . children . length } } ) , Object . defineProperty ( b . Group . prototype , "angle" , { get : function ( ) { return b . Math . radToDeg ( this . rotation ) } , set : function ( a ) { this . rotation = b . Math . degToRad ( a ) } } ) , Object . defineProperty ( b . Group . prototype , "fixedToCamera" , { get : function ( ) { return ! ! this . _cache [ 7 ] } , set : function ( a ) { a ? ( this . _cache [ 7 ] = 1 , this . cameraOffset . set ( this . x , this . y ) ) : this . _cache [ 7 ] = 0 } } ) , b . World = function ( a ) { b . Group . call ( this , a , null , "__world" , ! 1 ) , this . bounds = new b . Rectangle ( 0 , 0 , a . width , a . height ) , this . camera = null , this . currentRenderOrderID = 0 } , b . World . prototype = Object . create ( b . Group . prototype ) , b . World . prototype . constructor = b . World , b . World . prototype . boot = function ( ) { this . camera = new b . Camera ( this . game , 0 , 0 , 0 , this . game . width , this . game . height ) , this . camera . displayObject = this , this . game . camera = this . camera , this . game . stage . addChild ( this ) } , b . World . prototype . setBounds = function ( a , b , c , d ) { c < this . game . width && ( c = this . game . width ) , d < this . game . height && ( d = this . game . height ) , this . bounds . setTo ( a , b , c , d ) , this . camera . bounds && this . camera . bounds . setTo ( a , b , c , d ) , this . game . physics . setBoundsToWorld ( ) } , b . World . prototype . destroy = function ( ) { this . camera . reset ( ) , this . game . input . reset ( ! 0 ) , this . removeAll ( ) } , Object . defineProperty ( b . World . prototype , "width" , { get : function ( ) { return this . bounds . width } , set : function ( a ) { this . bounds . width = a } } ) , Object . defineProperty ( b . World . prototype , "height" , { get : function ( ) { return this . bounds . height } , set : function ( a ) { this . bounds . height = a } } ) , Object . defineProperty ( b . World . prototype , "centerX" , { get : function ( ) { return this . bounds . halfWidth } } ) , Object . defineProperty ( b . World . prototype , "centerY" , { get : function ( ) { return this . bounds . halfHeight } } ) , Object . defineProperty ( b . World . prototype , "randomX" , { get : function ( ) { return this . bounds . x < 0 ? this . game . rnd . integerInRange ( this . bounds . x , this . bounds . width - Math . abs ( this . bounds . x ) ) : this . game . rnd . integerInRange ( this . bounds . x , this . bounds . width ) } } ) , 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 . scale = 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
} } , leave : function ( a ) { this . withinGame = ! 1 , this . move ( a , ! 1 ) } , stop : function ( a ) { if ( this . _stateReset ) return a . preventDefault ( ) , void 0 ; if ( this . timeUp = this . game . time . now , ( this . game . input . multiInputOverride == b . Input . MOUSE _OVERRIDES _TOUCH || this . game . input . multiInputOverride == b . Input . MOUSE _TOUCH _COMBINE || this . game . input . multiInputOverride == b . Input . TOUCH _OVERRIDES _MOUSE && 0 === this . game . input . currentPointers ) && ( this . game . input . onUp . dispatch ( this , a ) , this . duration >= 0 && this . duration <= this . game . input . tapRate && ( this . timeUp - this . previousTapTime < this . game . input . doubleTapRate ? this . game . input . onTap . dispatch ( this , ! 0 ) : this . game . input . onTap . dispatch ( this , ! 1 ) , this . previousTapTime = this . timeUp ) ) , this . id > 0 && ( this . active = ! 1 ) , this . withinGame = ! 1 , this . isDown = ! 1 , this . isUp = ! 0 , this . isMouse === ! 1 && this . game . input . currentPointers -- , this . game . input . interactiveItems . total > 0 ) { var c = this . game . input . interactiveItems . next ; do c && c . _releasedHandler ( this ) , c = c . next ; while ( null != c ) } return this . targetObject && this . targetObject . _releasedHandler ( this ) , this . targetObject = null , this } , justPressed : function ( a ) { return a = a || this . game . input . justPressedRate , this . isDown === ! 0 && this . timeDown + a > this . game . time . now } , justReleased : function ( a ) { return a = a || this . game . input . justReleasedRate , this . isUp === ! 0 && this . timeUp + a > this . game . time . now } , reset : function ( ) { this . isMouse === ! 1 && ( this . active = ! 1 ) , this . identifier = null , this . isDown = ! 1 , this . isUp = ! 0 , this . totalTouches = 0 , this . _holdSent = ! 1 , this . _history . length = 0 , this . _stateReset = ! 0 , this . targetObject && this . targetObject . _releasedHandler ( this ) , this . targetObject = null } } , b . Pointer . prototype . constructor = b . Pointer , Object . defineProperty ( b . Pointer . prototype , "duration" , { get : function ( ) { return this . isUp ? - 1 : this . game . time . now - this . timeDown } } ) , Object . defineProperty ( b . Pointer . prototype , "worldX" , { get : function ( ) { return this . game . world . camera . x + this . x } } ) , Object . defineProperty ( b . Pointer . prototype , "worldY" , { get : function ( ) { return this . game . world . camera . y + this . y } } ) , b . Touch = function ( a ) { this . game = a , this . disabled = ! 1 , this . callbackContext = this . game , this . touchStartCallback = null , this . touchMoveCallback = null , this . touchEndCallback = null , this . touchEnterCallback = null , this . touchLeaveCallback = null , this . touchCancelCallback = null , this . preventDefault = ! 0 , this . event = null , this . _onTouchStart = null , this . _onTouchMove = null , this . _onTouchEnd = null , this . _onTouchEnter = null , this . _onTouchLeave = null , this . _onTouchCancel = null , this . _onTouchMove = null } , b . Touch . prototype = { start : function ( ) { var a = this ; this . game . device . touch && ( this . _onTouchStart = function ( b ) { return a . onTouchStart ( b ) } , this . _onTouchMove = function ( b ) { return a . onTouchMove ( b ) } , this . _onTouchEnd = function ( b ) { return a . onTouchEnd ( b ) } , this . _onTouchEnter = function ( b ) { return a . onTouchEnter ( b ) } , this . _onTouchLeave = function ( b ) { return a . onTouchLeave ( b ) } , this . _onTouchCancel = function ( b ) { return a . onTouchCancel ( b ) } , this . game . renderer . view . addEventListener ( "touchstart" , this . _onTouchStart , ! 1 ) , this . game . renderer . view . addEventListener ( "touchmove" , this . _onTouchMove , ! 1 ) , this . game . renderer . view . addEventListener ( "touchend" , this . _onTouchEnd , ! 1 ) , this . game . renderer . view . addEventListener ( "touchenter" , this . _onTouchEnter , ! 1 ) , this . game . renderer . view . addEventListener ( "touchleave" , this . _onTouchLeave , ! 1 ) , this . game . renderer . view . addEventListener ( "touchcancel" , this . _onTouchCancel , ! 1 ) ) } , 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 . touchEnterCall
} , emitter : function ( a , c , d ) { return this . game . particles . add ( new b . Particles . Arcade . Emitter ( this . game , a , c , d ) ) } , bitmapFont : function ( a , c , d , e , f , g , h , i , j ) { return new b . BitmapFont ( this . game , a , c , d , e , f , g , h , i , j ) } , bitmapText : function ( a , c , d , e , f , g ) { return "undefined" == typeof g && ( g = this . world ) , g . add ( new b . BitmapText ( this . game , a , c , d , e , f ) ) } , tilemap : function ( a , c ) { return new b . Tilemap ( this . game , a , c ) } , renderTexture : function ( a , c , d , e ) { ( "undefined" == typeof d || "" === d ) && ( d = this . game . rnd . uuid ( ) ) , "undefined" == typeof e && ( e = ! 1 ) ; var f = new b . RenderTexture ( this . game , a , c , d ) ; return e && this . game . cache . addRenderTexture ( d , f ) , f } , bitmapData : function ( a , c , d ) { "undefined" == typeof d && ( d = ! 1 ) , ( "undefined" == typeof key || "" === key ) && ( key = this . game . rnd . uuid ( ) ) ; var e = new b . BitmapData ( this . game , key , a , c ) ; return d && this . game . cache . addBitmapData ( key , e ) , e } , filter : function ( a ) { var c = Array . prototype . splice . call ( arguments , 1 ) , a = new b . Filter [ a ] ( this . game ) ; return a . init . apply ( a , c ) , a } } , b . GameObjectFactory . prototype . constructor = b . GameObjectFactory , b . BitmapData = function ( c , d , e , f ) { "undefined" == typeof e && ( e = 100 ) , "undefined" == typeof f && ( f = 100 ) , this . game = c , this . key = d , this . width = e , this . height = f , this . canvas = b . Canvas . create ( e , f ) , this . context = this . canvas . getContext ( "2d" ) , this . ctx = this . context , this . imageData = this . context . getImageData ( 0 , 0 , e , f ) , this . pixels = this . imageData . data . buffer ? this . imageData . data . buffer : this . imageData . data , this . baseTexture = new a . BaseTexture ( this . canvas ) , this . texture = new a . Texture ( this . baseTexture ) , this . textureFrame = new b . Frame ( 0 , 0 , 0 , e , f , "bitmapData" , c . rnd . uuid ( ) ) , this . type = b . BITMAPDATA , this . _dirty = ! 1 } , b . BitmapData . prototype = { add : function ( a ) { if ( Array . isArray ( a ) ) for ( var b = 0 ; b < a . length ; b ++ ) a [ b ] . loadTexture && a [ b ] . loadTexture ( this ) ; else a . loadTexture ( this ) } , clear : function ( ) { this . context . clearRect ( 0 , 0 , this . width , this . height ) , this . _dirty = ! 0 } , resize : function ( a , b ) { ( a !== this . width || b !== this . height ) && ( console . log ( "bmd resize" , a , b ) , this . width = a , this . height = b , this . canvas . width = a , this . canvas . height = b , this . textureFrame . width = a , this . textureFrame . height = b , this . imageData = this . context . getImageData ( 0 , 0 , a , b ) ) , this . _dirty = ! 0 } , refreshBuffer : function ( ) { this . imageData = this . context . getImageData ( 0 , 0 , this . width , this . height ) , this . pixels = new Int32Array ( this . imageData . data . buffer ) } , setPixel32 : function ( a , b , c , d , e , f ) { a >= 0 && a <= this . width && b >= 0 && b <= this . height && ( this . pixels [ b * this . width + a ] = f << 24 | e << 16 | d << 8 | c , this . context . putImageData ( this . imageData , 0 , 0 ) , this . _dirty = ! 0 ) } , setPixel : function ( a , b , c , d , e ) { this . setPixel32 ( a , b , c , d , e , 255 ) } , getPixel : function ( a , b ) { return a >= 0 && a <= this . width && b >= 0 && b <= this . height ? this . data32 [ b * this . width + a ] : void 0 } , getPixel32 : function ( a , b ) { return a >= 0 && a <= this . width && b >= 0 && b <= this . height ? this . data32 [ b * this . width + a ] : void 0 } , getPixels : function ( a ) { return this . context . getImageData ( a . x , a . y , a . width , a . height ) } , copyPixels : function ( a , b , c , d ) { this . context . drawImage ( a , b . x , b . y , b . width , b . height , c , d , b . width , b . height ) } , render : function ( ) { this . _dirty && ( this . game . renderType == b . WEBGL && a . texturesToUpdate . push ( this . baseTexture ) , this . _dirty = ! 1 ) } } , b . BitmapData . prototype . constructor = b . BitmapData , b . Sprite = function ( c , d , e , f , g ) { d = d || 0 , e = e || 0 , f = f || null , g = g || null , this . game = c , this . name = "" , this . type = b . SPRITE , this . events = new b . Events ( this ) , this . animations = new b . AnimationManager ( this ) , this . key = f , this . _frame = 0 , this . _frameName = "" , a . Sprite . call ( this , a . TextureCache . _ _default ) , this . loadTexture ( f , g ) , this . position . set ( d , e ) , this . world = new b . Point ( d , e ) , this . autoCull = ! 1 , this . input = null , this . body = null , this . health = 1 , this . lifespan = 0 , this . checkWorldBounds = ! 1 , this . outOfBoundsKill = ! 1 , this . debug = ! 1 , this . cameraOffset = new b . Point , this . _cache = new Int16Array ( [ 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 ] ) , this . _bounds = new b . Rectangle } , b . Sprite . prototype = Object . create ( a . Sprite . prototype ) , b . Sprite . prototype . constructor = b . Sprite , b . Sprite . prototype . preUpdate = function ( ) { if ( 1 === this . _cache [ 4 ] ) return this . world . setTo ( this . parent . position . x + this . position . x , this . parent . position . y + this . position . y ) , this . worldTransform . tx = this . world . x , this . worldTransform . ty = this . world . y , this . _cache [ 0 ] = this . world . x , this . _cache [ 1 ] = this . world . y , this . _cache [ 2 ] = this . rotation , this . _cache [ 4 ] = 0 , ! 1 ; if ( this . _cache
} , b . Button . prototype . onInputOutHandler = function ( a , b ) { this . freezeFrames === ! 1 && this . setState ( 2 ) , this . onOutSound && this . onOutSound . play ( this . onOutSoundMarker ) , this . onInputOut && this . onInputOut . dispatch ( this , b ) } , b . Button . prototype . onInputDownHandler = function ( a , b ) { this . freezeFrames === ! 1 && this . setState ( 3 ) , this . onDownSound && this . onDownSound . play ( this . onDownSoundMarker ) , this . onInputDown && this . onInputDown . dispatch ( this , b ) } , b . Button . prototype . onInputUpHandler = function ( a , b , c ) { this . onUpSound && this . onUpSound . play ( this . onUpSoundMarker ) , this . onInputUp && this . onInputUp . dispatch ( this , b , c ) , this . freezeFrames || ( this . forceOut ? this . setState ( 2 ) : this . _onUpFrameName || this . _onUpFrameID ? this . setState ( 4 ) : c ? this . setState ( 1 ) : this . setState ( 2 ) ) } , b . Button . prototype . setState = function ( a ) { 1 === a ? null != this . _onOverFrameName ? this . frameName = this . _onOverFrameName : null != this . _onOverFrameID && ( this . frame = this . _onOverFrameID ) : 2 === a ? null != this . _onOutFrameName ? this . frameName = this . _onOutFrameName : null != this . _onOutFrameID && ( this . frame = this . _onOutFrameID ) : 3 === a ? null != this . _onDownFrameName ? this . frameName = this . _onDownFrameName : null != this . _onDownFrameID && ( this . frame = this . _onDownFrameID ) : 4 === a && ( null != this . _onUpFrameName ? this . frameName = this . _onUpFrameName : null != this . _onUpFrameID && ( this . frame = this . _onUpFrameID ) ) } , b . Graphics = function ( c , d , e ) { d = d || 0 , e = e || 0 , this . game = c , this . exists = ! 0 , this . name = "" , this . type = b . GRAPHICS , this . world = new b . Point ( d , e ) , this . events = new b . Events ( this ) , this . input = null , this . cameraOffset = new b . Point , a . Graphics . call ( this ) , this . position . set ( d , e ) , this . _cache = new Int16Array ( [ 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 ] ) } , b . Graphics . prototype = Object . create ( a . Graphics . prototype ) , b . Graphics . prototype . constructor = b . Graphics , b . Graphics . prototype . preUpdate = function ( ) { return this . _cache [ 0 ] = this . world . x , this . _cache [ 1 ] = this . world . y , this . _cache [ 2 ] = this . rotation , this . exists && this . parent . exists ? ( this . autoCull && ( this . renderable = this . game . world . camera . screenView . intersects ( this . getBounds ( ) ) ) , this . world . setTo ( this . game . camera . x + this . worldTransform [ 2 ] , this . game . camera . y + this . worldTransform [ 5 ] ) , this . visible && ( this . _cache [ 3 ] = this . game . world . currentRenderOrderID ++ ) , ! 0 ) : ( this . renderOrderID = - 1 , ! 1 ) } , b . Graphics . prototype . update = function ( ) { } , b . Graphics . prototype . postUpdate = function ( ) { 1 === this . _cache [ 7 ] && ( this . position . x = this . game . camera . view . x + this . cameraOffset . x , this . position . y = this . game . camera . view . y + this . cameraOffset . y ) } , b . Graphics . prototype . destroy = function ( ) { this . clear ( ) , this . parent && this . parent . remove ( this ) , this . exists = ! 1 , this . visible = ! 1 , this . game = null } , b . Graphics . prototype . drawPolygon = function ( a ) { this . moveTo ( a . points [ 0 ] . x , a . points [ 0 ] . y ) ; for ( var b = 1 ; b < a . points . length ; b += 1 ) this . lineTo ( a . points [ b ] . x , a . points [ b ] . y ) ; this . lineTo ( a . points [ 0 ] . x , a . points [ 0 ] . y ) } , Object . defineProperty ( b . Graphics . prototype , "angle" , { get : function ( ) { return b . Math . radToDeg ( this . rotation ) } , set : function ( a ) { this . rotation = b . Math . degToRad ( a ) } } ) , Object . defineProperty ( b . Graphics . prototype , "inputEnabled" , { get : function ( ) { return this . input && this . input . enabled } , set : function ( a ) { a ? null === this . input && ( this . input = new b . InputHandler ( this ) , this . input . start ( ) ) : this . input && this . input . enabled && this . input . stop ( ) } } ) , Object . defineProperty ( b . Graphics . prototype , "fixedToCamera" , { get : function ( ) { return ! ! this . _cache [ 7 ] } , set : function ( a ) { a ? ( this . _cache [ 7 ] = 1 , this . cameraOffset . set ( this . x , this . y ) ) : this . _cache [ 7 ] = 0 } } ) , b . RenderTexture = function ( c , d , e , f ) { this . game = c , this . key = f , this . type = b . RENDERTEXTURE , a . RenderTexture . call ( this , d , e ) } , b . RenderTexture . prototype = Object . create ( a . RenderTexture . prototype ) , b . RenderTexture . prototype . constructor = b . RenderTexture , b . SpriteBatch = function ( c , d , e , f ) { a . SpriteBatch . call ( this ) , b . Group . call ( this , c , d , e , f ) , this . type = b . SPRITEBATCH } , b . SpriteBatch . prototype = b . Utils . extend ( ! 0 , b . SpriteBatch . prototype , b . Group . prototype , a . SpriteBatch . prototype ) , b . SpriteBatch . prototype . constructor = b . SpriteBatch , b . BitmapFont = function ( c , d , e , f , g , h , i , j , k , l ) { this . characterWidth = e , this . characterHeight = f , this . characterSpacingX = i || 0 , this . characterSpacingY = j || 0 , this . characterPerRow = h , this . offsetX = k || 0 , this . offsetY = l || 0 , this . align = "left" , this . multiLine = ! 1 , this . autoUpperCase = ! 0 , this . c
} , clampBottom : function ( a , b ) { return b > a ? b : a } , within : function ( a , b , c ) { return Math . abs ( a - b ) <= c } , mapLinear : function ( a , b , c , d , e ) { return d + ( a - b ) * ( e - d ) / ( c - b ) } , smoothstep : function ( a , b , c ) { return b >= a ? 0 : a >= c ? 1 : ( a = ( a - b ) / ( c - b ) , a * a * ( 3 - 2 * a ) ) } , smootherstep : function ( a , b , c ) { return b >= a ? 0 : a >= c ? 1 : ( a = ( a - b ) / ( c - b ) , a * a * a * ( a * ( 6 * a - 15 ) + 10 ) ) } , sign : function ( a ) { return 0 > a ? - 1 : a > 0 ? 1 : 0 } , p2px : function ( a ) { return a *= - 20 } , px2p : function ( a ) { return a * - . 05 } , degToRad : function ( ) { var a = Math . PI / 180 ; return function ( b ) { return b * a } } ( ) , radToDeg : function ( ) { var a = 180 / Math . PI ; return function ( b ) { return b * a } } ( ) } , b . RandomDataGenerator = function ( a ) { "undefined" == typeof a && ( a = [ ] ) , this . c = 1 , this . s0 = 0 , this . s1 = 0 , this . s2 = 0 , this . sow ( a ) } , b . RandomDataGenerator . prototype = { rnd : function ( ) { var a = 2091639 * this . s0 + 2.3283064365386963 e - 10 * this . c ; return this . c = 0 | a , this . s0 = this . s1 , this . s1 = this . s2 , this . s2 = a - this . c , this . s2 } , sow : function ( a ) { "undefined" == typeof a && ( a = [ ] ) , this . s0 = this . hash ( " " ) , this . s1 = this . hash ( this . s0 ) , this . s2 = this . hash ( this . s1 ) , this . c = 1 ; for ( var b , c = 0 ; b = a [ c ++ ] ; ) this . s0 -= this . hash ( b ) , this . s0 += ~ ~ ( this . s0 < 0 ) , this . s1 -= this . hash ( b ) , this . s1 += ~ ~ ( this . s1 < 0 ) , this . s2 -= this . hash ( b ) , this . s2 += ~ ~ ( this . s2 < 0 ) } , hash : function ( a ) { var b , c , d ; for ( d = 4022871197 , a = a . toString ( ) , c = 0 ; c < a . length ; c ++ ) d += a . charCodeAt ( c ) , b = . 02519603282416938 * d , d = b >>> 0 , b -= d , b *= d , d = b >>> 0 , b -= d , d += 4294967296 * b ; return 2.3283064365386963 e - 10 * ( d >>> 0 ) } , integer : function ( ) { return 4294967296 * this . rnd . apply ( this ) } , frac : function ( ) { return this . rnd . apply ( this ) + 1.1102230246251565 e - 16 * ( 0 | 2097152 * this . rnd . apply ( this ) ) } , real : function ( ) { return this . integer ( ) + this . frac ( ) } , integerInRange : function ( a , b ) { return Math . floor ( this . realInRange ( a , b ) ) } , realInRange : function ( a , b ) { return this . frac ( ) * ( b - a ) + a } , normal : function ( ) { return 1 - 2 * this . frac ( ) } , uuid : function ( ) { var a = "" , b = "" ; for ( b = a = "" ; a ++ < 36 ; b += ~ a % 5 | 4 & 3 * a ? ( 15 ^ a ? 8 ^ this . frac ( ) * ( 20 ^ a ? 16 : 4 ) : 4 ) . toString ( 16 ) : "-" ) ; return b } , pick : function ( a ) { return a [ this . integerInRange ( 0 , a . length ) ] } , weightedPick : function ( a ) { return a [ ~ ~ ( Math . pow ( this . frac ( ) , 2 ) * a . length ) ] } , timestamp : function ( a , b ) { return this . realInRange ( a || 9466848e5 , b || 1577862e6 ) } , angle : function ( ) { return this . integerInRange ( - 180 , 180 ) } } , b . RandomDataGenerator . prototype . constructor = b . RandomDataGenerator , b . QuadTree = function ( a , b , c , d , e , f , g ) { this . maxObjects = e || 10 , this . maxLevels = f || 4 , this . level = g || 0 , this . bounds = { x : Math . round ( a ) , y : Math . round ( b ) , width : c , height : d , subWidth : Math . floor ( c / 2 ) , subHeight : Math . floor ( d / 2 ) , right : Math . round ( a ) + Math . floor ( c / 2 ) , bottom : Math . round ( b ) + Math . floor ( d / 2 ) } , this . objects = [ ] , this . nodes = [ ] } , b . QuadTree . prototype = { populate : function ( a ) { a . forEach ( this . populateHandler , this , ! 0 ) } , populateHandler : function ( a ) { a . body && a . body . checkCollision . none === ! 1 && a . alive && this . insert ( a . body ) } , split : function ( ) { this . level ++ , this . nodes [ 0 ] = new b . QuadTree ( this . bounds . right , this . bounds . y , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) , this . nodes [ 1 ] = new b . QuadTree ( this . bounds . x , this . bounds . y , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) , this . nodes [ 2 ] = new b . QuadTree ( this . bounds . x , this . bounds . bottom , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) , this . nodes [ 3 ] = new b . QuadTree ( this . bounds . right , this . bounds . bottom , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level ) } , insert : function ( a ) { var b , c = 0 ; if ( null != this . nodes [ 0 ] && ( b = this . getIndex ( a ) , - 1 !== b ) ) return this . nodes [ b ] . insert ( a ) , void 0 ; if ( this . objects . push ( a ) , this . objects . length > this . maxObjects && this . level < this . maxLevels ) for ( null == this . nodes [ 0 ] && this . split ( ) ; c < this . objects . length ; ) b = this . getIndex ( this . objects [ c ] ) , - 1 !== b ? this . nodes [ b ] . insert ( this . objects . splice ( c , 1 ) [ 0 ] ) : c ++ } , getIndex : function ( a ) { var b = - 1 ; return a . x < this . bounds . right && a . right < this . bounds . right ? a . y < this . bounds . bottom && a . bottom < this . bounds . bottom ? b = 1 : a . y > this . bounds . bottom && ( b = 2 ) : a . x > this . bounds . right && ( a . y < this . bounds . bottom && a . bottom < this . bounds . bottom ? b = 0 : a . y > this . bounds . bottom && ( b = 3 ) ) , b } , retrieve : function ( a ) { var b = this . objects ; return a . body . quadTreeIndex = this . getIndex ( a . body ) , this . nodes [ 0 ] && ( - 1 !== a . body . quadTreeIndex ? b = b . concat (
} , addBinary : function ( a , b ) { this . _binary [ a ] = b } , addBitmapData : function ( a , b ) { return this . _bitmapDatas [ a ] = b , b } , addRenderTexture : function ( a , c ) { var d = new b . Frame ( 0 , 0 , 0 , c . width , c . height , "" , "" ) ; this . _textures [ a ] = { texture : c , frame : d } } , addBitmapFont : function ( a , b ) { this . _bitmapFont [ a ] = b } , addSpriteSheet : function ( c , d , e , f , g , h , i , j ) { this . _images [ c ] = { url : d , data : e , spriteSheet : ! 0 , frameWidth : f , frameHeight : g , margin : i , spacing : j } , a . BaseTextureCache [ c ] = new a . BaseTexture ( e ) , a . TextureCache [ c ] = new a . Texture ( a . BaseTextureCache [ c ] ) , this . _images [ c ] . frameData = b . AnimationParser . spriteSheet ( this . game , c , f , g , h , i , j ) } , addTilemap : function ( a , b , c , d ) { this . _tilemaps [ a ] = { url : b , data : c , format : d } } , addTextureAtlas : function ( c , d , e , f , g ) { this . _images [ c ] = { url : d , data : e , spriteSheet : ! 0 } , a . BaseTextureCache [ c ] = new a . BaseTexture ( e ) , a . TextureCache [ c ] = new a . Texture ( a . BaseTextureCache [ c ] ) , g == b . Loader . TEXTURE _ATLAS _JSON _ARRAY ? this . _images [ c ] . frameData = b . AnimationParser . JSONData ( this . game , f , c ) : g == b . Loader . TEXTURE _ATLAS _JSON _HASH ? this . _images [ c ] . frameData = b . AnimationParser . JSONDataHash ( this . game , f , c ) : g == b . Loader . TEXTURE _ATLAS _XML _STARLING && ( this . _images [ c ] . frameData = b . AnimationParser . XMLData ( this . game , f , c ) ) } , addBitmapFont : function ( c , d , e , f , g , h ) { this . _images [ c ] = { url : d , data : e , spriteSheet : ! 0 } , a . BaseTextureCache [ c ] = new a . BaseTexture ( e ) , a . TextureCache [ c ] = new a . Texture ( a . BaseTextureCache [ c ] ) , b . LoaderParser . bitmapFont ( this . game , f , c , g , h ) } , addPhysicsData : function ( a , b , c , d ) { this . _physics [ a ] = { url : b , data : c , format : d } } , addDefaultImage : function ( ) { var c = new Image ; c . src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAABVJREFUeF7NwIEAAAAAgKD9qdeocAMAoAABm3DkcAAAAABJRU5ErkJggg==" , this . _images . _ _default = { url : null , data : c , spriteSheet : ! 1 } , this . _images . _ _default . frame = new b . Frame ( 0 , 0 , 0 , 32 , 32 , "" , "" ) , a . BaseTextureCache . _ _default = new a . BaseTexture ( c ) , a . TextureCache . _ _default = new a . Texture ( a . BaseTextureCache . _ _default ) } , addMissingImage : function ( ) { var c = new Image ; c . src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUeNq01ssOwyAMRFG46v//Mt1ESmgh+DFmE2GPOBARKb2NVjo+17PXLD8a1+pl5+A+wSgFygymWYHBb0FtsKhJDdZlncG2IzJ4ayoMDv20wTmSMzClEgbWYNTAkQ0Z+OJ+A/eWnAaR9+oxCF4Os0H8htsMUp+pwcgBBiMNnAwF8GqIgL2hAzaGFFgZauDPKABmowZ4GL369/0rwACp2yA/ttmvsQAAAABJRU5ErkJggg==" , this . _images . _ _missing = { url : null , data : c , spriteSheet : ! 1 } , this . _images . _ _missing . frame = new b . Frame ( 0 , 0 , 0 , 32 , 32 , "" , "" ) , a . BaseTextureCache . _ _missing = new a . BaseTexture ( c ) , a . TextureCache . _ _missing = new a . Texture ( a . BaseTextureCache . _ _missing ) } , addText : function ( a , b , c ) { this . _text [ a ] = { url : b , data : c } } , addImage : function ( c , d , e ) { this . _images [ c ] = { url : d , data : e , spriteSheet : ! 1 } , this . _images [ c ] . frame = new b . Frame ( 0 , 0 , 0 , e . width , e . height , c , this . game . rnd . uuid ( ) ) , a . BaseTextureCache [ c ] = new a . BaseTexture ( e ) , a . TextureCache [ c ] = new a . Texture ( a . BaseTextureCache [ c ] ) } , addSound : function ( a , b , c , d , e ) { d = d || ! 0 , e = e || ! 1 ; var f = ! 1 ; e && ( f = ! 0 ) , this . _sounds [ a ] = { url : b , data : c , isDecoding : ! 1 , decoded : f , webAudio : d , audioTag : e , locked : this . game . sound . touchLocked } } , reloadSound : function ( a ) { var b = this ; this . _sounds [ a ] && ( this . _sounds [ a ] . data . src = this . _sounds [ a ] . url , this . _sounds [ a ] . data . addEventListener ( "canplaythrough" , function ( ) { return b . reloadSoundComplete ( a ) } , ! 1 ) , this . _sounds [ a ] . data . load ( ) ) } , reloadSoundComplete : function ( a ) { this . _sounds [ a ] && ( this . _sounds [ a ] . locked = ! 1 , this . onSoundUnlock . dispatch ( a ) ) } , updateSound : function ( a , b , c ) { this . _sounds [ a ] && ( this . _sounds [ a ] [ b ] = c ) } , decodedSound : function ( a , b ) { this . _sounds [ a ] . data = b , this . _sounds [ a ] . decoded = ! 0 , this . _sounds [ a ] . isDecoding = ! 1 } , getCanvas : function ( a ) { return this . _canvases [ a ] ? this . _canvases [ a ] . canvas : ( console . warn ( 'Phaser.Cache.getCanvas: Invalid key: "' + a + '"' ) , void 0 ) } , getBitmapData : function ( a ) { return this . _bitmapDatas [ a ] ? this . _bitmapDatas [ a ] : ( console . warn ( 'Phaser.Cache.getBitmapData: Invalid key: "' + a + '"' ) , void 0 ) } , getBitmapFont : function ( a ) { return this . _bitmapFont [ a ] ? this . _bitmapFont [ a ] : ( console . warn ( 'Phaser.Cache.getBitmapFont: Invalid key: "' + a + '"' ) , void 0 ) } , getPhysicsData : function ( a , b ) { if ( "undefined" == typeof b || null === b ) { if ( this . _physics [ a ] ) retu
for ( var a = 0 ; a < this . _sounds . length ; a ++ ) this . _sounds [ a ] . update ( ) } , add : function ( a , c , d , e ) { "undefined" == typeof c && ( c = 1 ) , "undefined" == typeof d && ( d = ! 1 ) , "undefined" == typeof e && ( e = this . connectToMaster ) ; var f = new b . Sound ( this . game , a , c , d , e ) ; return this . _sounds . push ( f ) , f } , play : function ( a , b , c , d ) { "undefined" == typeof d && ( d = ! 1 ) ; var e = this . add ( a , b , c ) ; return e . play ( ) , e } } , b . SoundManager . prototype . constructor = b . SoundManager , Object . defineProperty ( b . SoundManager . prototype , "mute" , { get : function ( ) { return this . _muted } , set : function ( a ) { if ( a = a || null ) { if ( this . _muted ) return ; this . _muted = ! 0 , this . usingWebAudio && ( this . _muteVolume = this . masterGain . gain . value , this . masterGain . gain . value = 0 ) ; for ( var b = 0 ; b < this . _sounds . length ; b ++ ) this . _sounds [ b ] . usingAudioTag && ( this . _sounds [ b ] . mute = ! 0 ) } else { if ( this . _muted === ! 1 ) return ; this . _muted = ! 1 , this . usingWebAudio && ( this . masterGain . gain . value = this . _muteVolume ) ; for ( var b = 0 ; b < this . _sounds . length ; b ++ ) this . _sounds [ b ] . usingAudioTag && ( this . _sounds [ b ] . mute = ! 1 ) } } } ) , Object . defineProperty ( b . SoundManager . prototype , "volume" , { get : function ( ) { return this . usingWebAudio ? this . masterGain . gain . value : this . _volume } , set : function ( a ) { a = this . game . math . clamp ( a , 1 , 0 ) , this . _volume = a , this . usingWebAudio && ( this . masterGain . gain . value = a ) ; for ( var b = 0 ; b < this . _sounds . length ; b ++ ) this . _sounds [ b ] . usingAudioTag && ( this . _sounds [ b ] . volume = this . _sounds [ b ] . volume * a ) } } ) , b . Utils . Debug = function ( a ) { this . game = a , this . context = a . context , this . font = "14px Courier" , this . columnWidth = 100 , this . lineHeight = 16 , this . renderShadow = ! 0 , this . currentX = 0 , this . currentY = 0 , this . currentAlpha = 1 } , b . Utils . Debug . prototype = { start : function ( a , b , c , d ) { null != this . context && ( "number" != typeof a && ( a = 0 ) , "number" != typeof b && ( b = 0 ) , c = c || "rgb(255,255,255)" , "undefined" == typeof d && ( d = 0 ) , this . currentX = a , this . currentY = b , this . currentColor = c , this . currentAlpha = this . context . globalAlpha , this . columnWidth = d , this . context . save ( ) , this . context . setTransform ( 1 , 0 , 0 , 1 , 0 , 0 ) , this . context . strokeStyle = c , this . context . fillStyle = c , this . context . font = this . font , this . context . globalAlpha = 1 ) } , stop : function ( ) { this . context . restore ( ) , this . context . globalAlpha = this . currentAlpha } , line : function ( a , b , c ) { null != this . context && ( "undefined" != typeof b && ( this . currentX = b ) , "undefined" != typeof c && ( this . currentY = c ) , this . renderShadow && ( this . context . fillStyle = "rgb(0,0,0)" , this . context . fillText ( a , this . currentX + 1 , this . currentY + 1 ) , this . context . fillStyle = this . currentColor ) , this . context . fillText ( a , this . currentX , this . currentY ) , this . currentY += this . lineHeight ) } , splitline : function ( ) { if ( null != this . context ) { for ( var a = this . currentX , b = 0 ; b < arguments . length ; b ++ ) this . renderShadow && ( this . context . fillStyle = "rgb(0,0,0)" , this . context . fillText ( arguments [ b ] , a + 1 , this . currentY + 1 ) , this . context . fillStyle = this . currentColor ) , this . context . fillText ( arguments [ b ] , a , this . currentY ) , a += this . columnWidth ; this . currentY += this . lineHeight } } , renderQuadTree : function ( a , b ) { b = b || "rgba(255,0,0,0.3)" , this . start ( ) ; var c = a . bounds ; if ( 0 === a . nodes . length ) { this . context . strokeStyle = b , this . context . strokeRect ( c . x , c . y , c . width , c . height ) , this . renderText ( a . ID + " / " + a . objects . length , c . x + 4 , c . y + 16 , "rgb(0,200,0)" , "12px Courier" ) , this . context . strokeStyle = "rgb(0,255,0)" ; for ( var d = 0 ; d < a . objects . length ; d ++ ) this . context . strokeRect ( a . objects [ d ] . x , a . objects [ d ] . y , a . objects [ d ] . width , a . objects [ d ] . height ) } else for ( var d = 0 ; d < a . nodes . length ; d ++ ) this . renderQuadTree ( a . nodes [ d ] ) ; this . stop ( ) } , renderSoundInfo : function ( a , b , c , d ) { null != this . context && ( d = d || "rgb(255,255,255)" , this . start ( b , c , d ) , this . line ( "Sound: " + a . key + " Locked: " + a . game . sound . touchLocked ) , this . line ( "Is Ready?: " + this . game . cache . isSoundReady ( a . key ) + " Pending Playback: " + a . pendingPlayback ) , this . line ( "Decoded: " + a . isDecoded + " Decoding: " + a . isDecoding ) , this . line ( "Total Duration: " + a . totalDuration + " Playing: " + a . isPlaying ) , this . line ( "Time: " + a . currentTime ) , this . line ( "Volume: " + a . volume + " Muted: " + a . mute ) , this . line ( "WebAudio: " + a . usingWebAudio + " Audio: " + a . usingAudioTag ) , "" !== a . currentMarker && ( this . line ( "Marker: " + a . currentMarker + " Duration: " + a . duration ) , this . line ( "Start: " + a . markers [ a . currentMarker ] . start + " Stop: " + a . markers [ a . currentMarker ] . stop ) , this . line ( "Position: " + a . position ) ) , this . stop ( )
var f = a ; return "string" == typeof a && ( f = this . getLayerIndex ( a ) ) , null === f || f > this . layers . length ? ( console . warn ( "Tilemap.createLayer: Invalid layer ID given: " + f ) , void 0 ) : e . add ( new b . TilemapLayer ( this . game , this , f , c , d ) ) } , getIndex : function ( a , b ) { for ( var c = 0 ; c < a . length ; c ++ ) if ( a [ c ] . name === b ) return c ; return null } , getLayerIndex : function ( a ) { return this . getIndex ( this . layers , a ) } , getTilesetIndex : function ( a ) { return this . getIndex ( this . tilesets , a ) } , getImageIndex : function ( a ) { return this . getIndex ( this . images , a ) } , getObjectIndex : function ( a ) { return this . getIndex ( this . objects , a ) } , setTileIndexCallback : function ( a , b , c , d ) { if ( d = this . getLayer ( d ) , "number" == typeof a ) this . layers [ d ] . callbacks [ a ] = { callback : b , callbackContext : c } ; else for ( var e = 0 , f = a . length ; f > e ; e ++ ) this . layers [ d ] . callbacks [ a [ e ] ] = { callback : b , callbackContext : c } } , setTileLocationCallback : function ( a , b , c , d , e , f , g ) { if ( g = this . getLayer ( g ) , this . copy ( a , b , c , d , g ) , ! ( this . _results . length < 2 ) ) for ( var h = 1 ; h < this . _results . length ; h ++ ) this . _results [ h ] . setCollisionCallback ( e , f ) } , setCollision : function ( a , b , c ) { if ( "undefined" == typeof b && ( b = ! 0 ) , c = this . getLayer ( c ) , "number" == typeof a ) return this . setCollisionByIndex ( a , b , c , ! 0 ) ; for ( var d = 0 , e = a . length ; e > d ; d ++ ) this . setCollisionByIndex ( a [ d ] , b , c , ! 1 ) ; this . calculateFaces ( c ) } , setCollisionBetween : function ( a , b , c , d ) { if ( "undefined" == typeof c && ( c = ! 0 ) , d = this . getLayer ( d ) , ! ( a > b ) ) { for ( var e = a ; b >= e ; e ++ ) this . setCollisionByIndex ( e , c , d , ! 1 ) ; this . calculateFaces ( d ) } } , setCollisionByExclusion : function ( a , b , c ) { "undefined" == typeof b && ( b = ! 0 ) , c = this . getLayer ( c ) ; for ( var d = 0 , e = this . tiles . length ; e > d ; d ++ ) - 1 === a . indexOf ( d ) && this . setCollisionByIndex ( d , b , c , ! 1 ) ; this . calculateFaces ( c ) } , setCollisionByIndex : function ( a , b , c , d ) { "undefined" == typeof b && ( b = ! 0 ) , "undefined" == typeof c && ( c = this . currentLayer ) , "undefined" == typeof d && ( d = ! 0 ) ; for ( var e = 0 ; e < this . layers [ c ] . height ; e ++ ) for ( var f = 0 ; f < this . layers [ c ] . width ; f ++ ) { var g = this . layers [ c ] . data [ e ] [ f ] ; g && g . index === a && ( g . collides = b , g . faceTop = b , g . faceBottom = b , g . faceLeft = b , g . faceRight = b ) } return d && this . calculateFaces ( c ) , c } , getLayer : function ( a ) { return "undefined" == typeof a ? a = this . currentLayer : "string" == typeof a ? a = this . getLayerIndex ( a ) : a instanceof b . TilemapLayer && ( a = a . index ) , a } , calculateFaces : function ( a ) { for ( var b = null , c = null , d = null , e = null , f = 0 , g = this . layers [ a ] . height ; g > f ; f ++ ) for ( var h = 0 , i = this . layers [ a ] . width ; i > h ; h ++ ) { var j = this . layers [ a ] . data [ f ] [ h ] ; j && ( b = this . getTileAbove ( a , h , f ) , c = this . getTileBelow ( a , h , f ) , d = this . getTileLeft ( a , h , f ) , e = this . getTileRight ( a , h , f ) , b && b . collides && ( j . faceTop = ! 1 ) , c && c . collides && ( j . faceBottom = ! 1 ) , d && d . collides && ( j . faceLeft = ! 1 ) , e && e . collides && ( j . faceRight = ! 1 ) ) } } , getTileAbove : function ( a , b , c ) { return c > 0 ? this . layers [ a ] . data [ c - 1 ] [ b ] : null } , getTileBelow : function ( a , b , c ) { return c < this . layers [ a ] . height - 1 ? this . layers [ a ] . data [ c + 1 ] [ b ] : null } , getTileLeft : function ( a , b , c ) { return b > 0 ? this . layers [ a ] . data [ c ] [ b - 1 ] : null } , getTileRight : function ( a , b , c ) { return b < this . layers [ a ] . width - 1 ? this . layers [ a ] . data [ c ] [ b + 1 ] : null } , setLayer : function ( a ) { a = this . getLayer ( a ) , this . layers [ a ] && ( this . currentLayer = a ) } , putTile : function ( a , c , d , e ) { e = this . getLayer ( e ) , c >= 0 && c < this . layers [ e ] . width && d >= 0 && d < this . layers [ e ] . height && ( a instanceof b . Tile ? this . layers [ e ] . data [ d ] [ c ] . copy ( a ) : this . layers [ e ] . data [ d ] [ c ] . index = a , this . layers [ e ] . dirty = ! 0 , this . calculateFaces ( e ) ) } , putTileWorldXY : function ( a , b , c , d , e , f ) { f = this . getLayer ( f ) , b = this . game . math . snapToFloor ( b , d ) / d , c = this . game . math . snapToFloor ( c , e ) / e , this . putTile ( a , b , c , f ) } , getTile : function ( a , b , c ) { return c = this . getLayer ( c ) , a >= 0 && a < this . layers [ c ] . width && b >= 0 && b < this . layers [ c ] . height ? this . layers [ c ] . data [ b ] [ a ] : void 0 } , getTileWorldXY : function ( a , b , c , d , e ) { return 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 ) } , copy : function ( a , b , c , d , e ) { if ( e = this . getLayer ( e ) , ! this . layers [ e ] ) return this . _results . length = 0 , void 0 ; "undefined" == typeof a && ( a = 0 ) , "undefined" == typeof b && ( b = 0 ) , "undefined" == typeof c && ( c = this . layers [ e ] . width ) , "undefined" == typeof d && ( d = this . layers [ e ] . height ) , 0 > a && ( a = 0 ) , 0 > b && ( b = 0 ) , c > this . layers [ e ] . width && ( c = this . layers [ e ] . width ) , d > this . layers [ e ] . height && ( d = this . layers [ e ] . height ) , this . _results . length = 0 , this . _results . push (