2014-11-08 19:26:34 +00:00
/* Phaser (no libs) v2.2.0 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */
2014-11-25 00:48:53 +00:00
( function ( ) { function a ( a , b ) { this . _scaleFactor = a , this . _deltaMode = b , this . originalEvent = null } var b = this , c = c || { VERSION : "2.2.0-RC11" , GAMES : [ ] , AUTO : 0 , CANVAS : 1 , WEBGL : 2 , HEADLESS : 3 , NONE : 0 , LEFT : 1 , RIGHT : 2 , UP : 3 , DOWN : 4 , SPRITE : 0 , BUTTON : 1 , IMAGE : 2 , GRAPHICS : 3 , TEXT : 4 , TILESPRITE : 5 , BITMAPTEXT : 6 , GROUP : 7 , RENDERTEXTURE : 8 , TILEMAP : 9 , TILEMAPLAYER : 10 , EMITTER : 11 , POLYGON : 12 , BITMAPDATA : 13 , CANVAS _FILTER : 14 , WEBGL _FILTER : 15 , ELLIPSE : 16 , SPRITEBATCH : 17 , RETROFONT : 18 , POINTER : 19 , ROPE : 20 , blendModes : { NORMAL : 0 , ADD : 1 , MULTIPLY : 2 , SCREEN : 3 , OVERLAY : 4 , DARKEN : 5 , LIGHTEN : 6 , COLOR _DODGE : 7 , COLOR _BURN : 8 , HARD _LIGHT : 9 , SOFT _LIGHT : 10 , DIFFERENCE : 11 , EXCLUSION : 12 , HUE : 13 , SATURATION : 14 , COLOR : 15 , LUMINOSITY : 16 } , scaleModes : { DEFAULT : 0 , LINEAR : 0 , NEAREST : 1 } } ; if ( PIXI . InteractionManager = PIXI . InteractionManager || function ( ) { } , PIXI . dontSayHello = ! 0 , Math . trunc || ( Math . trunc = function ( a ) { return 0 > a ? Math . ceil ( a ) : Math . floor ( a ) } ) , Function . prototype . bind || ( Function . prototype . bind = function ( ) { var a = Array . prototype . slice ; return function ( b ) { function c ( ) { var f = e . concat ( a . call ( arguments ) ) ; d . apply ( this instanceof c ? this : b , f ) } var d = this , e = a . call ( arguments , 1 ) ; if ( "function" != typeof d ) throw new TypeError ; return c . prototype = function f ( a ) { return a && ( f . prototype = a ) , this instanceof f ? void 0 : new f } ( d . prototype ) , c } } ( ) ) , Array . isArray || ( Array . isArray = function ( a ) { return "[object Array]" == Object . prototype . toString . call ( a ) } ) , Array . prototype . forEach || ( Array . prototype . forEach = function ( a ) { "use strict" ; if ( void 0 === this || null === this ) throw new TypeError ; var b = Object ( this ) , c = b . length >>> 0 ; if ( "function" != typeof a ) throw new TypeError ; for ( var d = arguments . length >= 2 ? arguments [ 1 ] : void 0 , e = 0 ; c > e ; e ++ ) e in b && a . call ( d , b [ e ] , e , b ) } ) , "function" != typeof window . Uint32Array && "object" != typeof window . Uint32Array ) { var d = function ( a ) { var b = new Array ; window [ a ] = function ( a ) { if ( "number" == typeof a ) { Array . call ( this , a ) , this . length = a ; for ( var b = 0 ; b < this . length ; b ++ ) this [ b ] = 0 } else { Array . call ( this , a . length ) , this . length = a . length ; for ( var b = 0 ; b < this . length ; b ++ ) this [ b ] = a [ b ] } } , window [ a ] . prototype = b , window [ a ] . constructor = window [ a ] } ; d ( "Uint32Array" ) , d ( "Int16Array" ) } window . console || ( window . console = { } , window . console . log = window . console . assert = function ( ) { } , window . console . warn = window . console . assert = function ( ) { } ) , c . Utils = { getProperty : function ( a , b ) { for ( var c = b . split ( "." ) , d = c . pop ( ) , e = c . length , f = 1 , g = c [ 0 ] ; e > f && ( a = a [ g ] ) ; ) g = c [ f ] , f ++ ; return a ? a [ d ] : null } , setProperty : function ( a , b , c ) { for ( var d = b . split ( "." ) , e = d . pop ( ) , f = d . length , g = 1 , h = d [ 0 ] ; f > g && ( a = a [ h ] ) ; ) h = d [ g ] , g ++ ; return a && ( a [ e ] = c ) , a } , chanceRoll : function ( a ) { return "undefined" == typeof a && ( a = 50 ) , a > 0 && 100 * Math . random ( ) <= a } , randomChoice : function ( a , b ) { return Math . random ( ) < . 5 ? a : b } , transposeArray : function ( a ) { return c . ArrayUtils . transposeMatrix ( a ) } , rotateArray : function ( a , b ) { return c . ArrayUtils . rotateMatrix ( a , b ) } , shuffle : function ( a ) { return c . ArrayUtils . shuffle ( a ) } , 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 } , pad : function ( a , b , c , d ) { if ( "undefined" == typeof b ) var b = 0 ; if ( "undefined" == typeof c ) var c = " " ; if ( "undefined" == typeof d ) var d = 3 ; var e = 0 ; if ( b + 1 >= a . length ) switch ( d ) { case 1 : a = new Array ( b + 1 - a . length ) . join ( c ) + a ; break ; case 3 : var f = Math . ceil ( ( e = b - a . length ) / 2 ) , g = e - f ; a = new Array ( g + 1 ) . join ( c ) + a + new Array ( f + 1 ) . join ( c ) ; break ; default : a += new Array ( b + 1 - a . length ) . join ( c ) } return a } , isPlainObject : function ( a ) { if ( "object" != typeof a || a . nodeType || a === a . window ) return ! 1 ; try { if ( a . constructor && ! { } . hasOwnProperty . call ( a . constructor . prototype , "isPrototypeOf" ) ) return ! 1 } catch ( b ) { return ! 1 } return ! 0 } , extend : function ( ) { var a , b , d , e , f , g , h = arguments [ 0 ] || { } , i = 1 , j = arguments . length , k = ! 1 ; for ( "boolean" == typeof h && ( k = h , h = arguments [ 1 ] || { } , i = 2 ) , j === i && ( h = this , -- i ) ; j > i ; i ++ ) if ( null != ( a = arguments [ i ] ) ) for ( b in a ) d = h [ b ] , e = a [ b ] , h !== e && ( k && e && ( c . Utils . isPlainObject ( e ) || ( f = Array . isArray ( e ) ) ) ? ( f ? ( f = ! 1 , g = d && Array . isArray ( d ) ? d : [ ] ) : g = d && c . Utils . isPlainObject ( d ) ? d : { } , h [ b ] = c . Utils . extend ( k , g , e ) ) : void 0 !== e && ( h [ b ] = e ) ) ; return h } , mixin : function ( a , b ) { if ( ! a || "object" != typeof a ) return b ; for ( var d in a ) { var e = a [ d ] ; if ( ! e . childNodes && ! e . cloneNode ) { var f = typeof a [ d ] ; b [ d ] = a [ d ] && " objec
} , PIXI . Graphics . prototype . updateLocalBounds = function ( ) { var a = 1 / 0 , b = - 1 / 0 , c = 1 / 0 , d = - 1 / 0 ; if ( this . graphicsData . length ) for ( var e , f , g , h , i , j , k = 0 ; k < this . graphicsData . length ; k ++ ) { var l = this . graphicsData [ k ] , m = l . type , n = l . lineWidth ; if ( e = l . shape , m === PIXI . Graphics . RECT || m === PIXI . Graphics . RREC ) g = e . x - n / 2 , h = e . y - n / 2 , i = e . width + n , j = e . height + n , a = a > g ? g : a , b = g + i > b ? g + i : b , c = c > h ? h : c , d = h + j > d ? h + j : d ; else if ( m === PIXI . Graphics . CIRC ) g = e . x , h = e . y , i = e . radius + n / 2 , j = e . radius + n / 2 , a = a > g - i ? g - i : a , b = g + i > b ? g + i : b , c = c > h - j ? h - j : c , d = h + j > d ? h + j : d ; else if ( m === PIXI . Graphics . ELIP ) g = e . x , h = e . y , i = e . width + n / 2 , j = e . height + n / 2 , a = a > g - i ? g - i : a , b = g + i > b ? g + i : b , c = c > h - j ? h - j : c , d = h + j > d ? h + j : d ; else { f = e . points ; for ( var o = 0 ; o < f . length ; o += 2 ) g = f [ o ] , h = f [ o + 1 ] , a = a > g - n ? g - n : a , b = g + n > b ? g + n : b , c = c > h - n ? h - n : c , d = h + n > d ? h + n : d } } else a = 0 , b = 0 , c = 0 , d = 0 ; var p = this . boundsPadding ; this . _localBounds . x = a - p , this . _localBounds . width = b - a + 2 * p , this . _localBounds . y = c - p , this . _localBounds . height = d - c + 2 * p } , PIXI . Graphics . prototype . _generateCachedSprite = function ( ) { var a = this . getLocalBounds ( ) ; if ( this . _cachedSprite ) this . _cachedSprite . buffer . resize ( a . width , a . height ) ; else { var b = new PIXI . CanvasBuffer ( a . width , a . height ) , c = PIXI . Texture . fromCanvas ( b . canvas ) ; this . _cachedSprite = new PIXI . Sprite ( c ) , this . _cachedSprite . buffer = b , this . _cachedSprite . worldTransform = this . worldTransform } this . _cachedSprite . anchor . x = - ( a . x / a . width ) , this . _cachedSprite . anchor . y = - ( a . y / a . height ) , this . _cachedSprite . buffer . context . translate ( - a . x , - a . y ) , this . worldAlpha = 1 , PIXI . CanvasGraphics . renderGraphics ( this , this . _cachedSprite . buffer . context ) , this . _cachedSprite . alpha = this . alpha } , PIXI . Graphics . prototype . updateCachedSpriteTexture = function ( ) { var a = this . _cachedSprite , b = a . texture , c = a . buffer . canvas ; b . baseTexture . width = c . width , b . baseTexture . height = c . height , b . crop . width = b . frame . width = c . width , b . crop . height = b . frame . height = c . height , a . _width = c . width , a . _height = c . height , b . baseTexture . dirty ( ) } , PIXI . Graphics . prototype . destroyCachedSprite = function ( ) { this . _cachedSprite . texture . destroy ( ! 0 ) , this . _cachedSprite = null } , PIXI . Graphics . prototype . drawShape = function ( a ) { this . currentPath && this . currentPath . shape . points . length <= 2 && this . graphicsData . pop ( ) , this . currentPath = null ; var b = new PIXI . GraphicsData ( this . lineWidth , this . lineColor , this . lineAlpha , this . fillColor , this . fillAlpha , this . filling , a ) ; return this . graphicsData . push ( b ) , b . type === PIXI . Graphics . POLY && ( b . shape . closed = this . filling , this . currentPath = b ) , this . dirty = ! 0 , b } , PIXI . GraphicsData = function ( a , b , c , d , e , f , g ) { this . lineWidth = a , this . lineColor = b , this . lineAlpha = c , this . _lineTint = b , this . fillColor = d , this . fillAlpha = e , this . _fillTint = d , this . fill = f , this . shape = g , this . type = g . type } , PIXI . Graphics . POLY = 0 , PIXI . Graphics . RECT = 1 , PIXI . Graphics . CIRC = 2 , PIXI . Graphics . ELIP = 3 , PIXI . Graphics . RREC = 4 , PIXI . Polygon . prototype . type = PIXI . Graphics . POLY , PIXI . Rectangle . prototype . type = PIXI . Graphics . RECT , PIXI . Circle . prototype . type = PIXI . Graphics . CIRC , PIXI . Ellipse . prototype . type = PIXI . Graphics . ELIP , PIXI . RoundedRectangle . prototype . type = PIXI . Graphics . RREC , c . Camera = function ( a , b , d , e , f , g ) { this . game = a , this . world = a . world , this . id = 0 , this . view = new c . Rectangle ( d , e , f , g ) , this . screenView = new c . Rectangle ( d , e , f , g ) , this . bounds = new c . Rectangle ( d , e , f , g ) , this . deadzone = null , this . visible = ! 0 , this . roundPx = ! 0 , this . atLimit = { x : ! 1 , y : ! 1 } , this . target = null , this . displayObject = null , this . scale = null , this . totalInView = 0 , this . _targetPosition = new c . Point , this . _edge = 0 , this . _position = new c . Point } , c . Camera . FOLLOW _LOCKON = 0 , c . Camera . FOLLOW _PLATFORMER = 1 , c . Camera . FOLLOW _TOPDOWN = 2 , c . Camera . FOLLOW _TOPDOWN _TIGHT = 3 , c . Camera . prototype = { preUpdate : function ( ) { this . totalInView = 0 } , follow : function ( a , b ) { "undefined" == typeof b && ( b = c . Camera . FOLLOW _LOCKON ) , this . target = a ; var d ; switch ( b ) { case c . Camera . FOLLOW _PLATFORMER : var e = this . width / 8 , f = this . height / 3 ; this . deadzone = new c . Rectangle ( ( this . width - e ) / 2 , ( this . height - f ) / 2 - . 25 * f , e , f ) ; break ; case c . Camera . FOLLOW _TOPDOWN : d = Math . max ( this . width , this . height ) / 4 , this . deadzone = new c . Rectangle ( ( this . width - d ) / 2 , ( this . height - d ) / 2 , d , d ) ; break ; case c . Camera . FOLLOW _TOPDOWN _TIGHT : d = Math . max ( this . width , this . height ) / 8 , this . deadzone = new c . Rectangle ( ( this . width - d ) / 2 , ( this . height - d ) / 2 , d , d ) ; break ; case c . Camera . FOLLOW _LOCKON : this . deadzone = null ; brea
} , c . Group . prototype . checkAll = function ( a , b , c , d , e ) { "undefined" == typeof c && ( c = ! 1 ) , "undefined" == typeof d && ( d = ! 1 ) , "undefined" == typeof e && ( e = ! 1 ) ; for ( var f = 0 , g = this . children . length ; g > f ; f ++ ) if ( ( ! c || c && this . children [ f ] . alive ) && ( ! d || d && this . children [ f ] . visible ) && ! this . checkProperty ( this . children [ f ] , a , b , e ) ) return ! 1 ; return ! 0 } , c . Group . prototype . addAll = function ( a , b , c , d ) { this . setAll ( a , b , c , d , 1 ) } , c . Group . prototype . subAll = function ( a , b , c , d ) { this . setAll ( a , b , c , d , 2 ) } , c . Group . prototype . multiplyAll = function ( a , b , c , d ) { this . setAll ( a , b , c , d , 3 ) } , c . Group . prototype . divideAll = function ( a , b , c , d ) { this . setAll ( a , b , c , d , 4 ) } , c . Group . prototype . callAllExists = function ( a , b ) { var c ; if ( arguments . length > 2 ) { c = [ ] ; for ( var d = 2 ; d < arguments . length ; d ++ ) c . push ( arguments [ d ] ) } for ( var d = 0 , e = this . children . length ; e > d ; d ++ ) this . children [ d ] . exists === b && this . children [ d ] [ a ] && this . children [ d ] [ a ] . apply ( this . children [ d ] , c ) } , c . Group . prototype . callbackFromArray = function ( a , b , c ) { if ( 1 == c ) { if ( a [ b [ 0 ] ] ) return a [ b [ 0 ] ] } else if ( 2 == c ) { if ( a [ b [ 0 ] ] [ b [ 1 ] ] ) return a [ b [ 0 ] ] [ b [ 1 ] ] } else if ( 3 == c ) { if ( a [ b [ 0 ] ] [ b [ 1 ] ] [ b [ 2 ] ] ) return a [ b [ 0 ] ] [ b [ 1 ] ] [ b [ 2 ] ] } else if ( 4 == c ) { if ( a [ b [ 0 ] ] [ b [ 1 ] ] [ b [ 2 ] ] [ b [ 3 ] ] ) return a [ b [ 0 ] ] [ b [ 1 ] ] [ b [ 2 ] ] [ b [ 3 ] ] } else if ( a [ b ] ) return a [ b ] ; return ! 1 } , c . Group . prototype . callAll = function ( a , b ) { if ( "undefined" != typeof a ) { a = a . split ( "." ) ; var c = a . length ; if ( "undefined" == typeof b || null === b || "" === b ) b = null ; else if ( "string" == typeof b ) { b = b . split ( "." ) ; var d = b . length } var e ; if ( arguments . length > 2 ) { e = [ ] ; for ( var f = 2 ; f < arguments . length ; f ++ ) e . push ( arguments [ f ] ) } for ( var g = null , h = null , f = 0 , i = this . children . length ; i > f ; f ++ ) g = this . callbackFromArray ( this . children [ f ] , a , c ) , b && g ? ( h = this . callbackFromArray ( this . children [ f ] , b , d ) , g && g . apply ( h , e ) ) : g && g . apply ( this . children [ f ] , e ) } } , c . Group . prototype . preUpdate = function ( ) { if ( ! this . exists || ! this . parent . exists ) return this . renderOrderID = - 1 , ! 1 ; for ( var a = this . children . length ; a -- ; ) this . children [ a ] . preUpdate ( ) ; return ! 0 } , c . Group . prototype . update = function ( ) { for ( var a = this . children . length ; a -- ; ) this . children [ a ] . update ( ) } , c . Group . prototype . postUpdate = function ( ) { 1 === this . _cache [ 7 ] && ( this . x = this . game . camera . view . x + this . cameraOffset . x , this . y = this . game . camera . view . y + this . cameraOffset . y ) ; for ( var a = this . children . length ; a -- ; ) this . children [ a ] . postUpdate ( ) } , c . Group . prototype . filter = function ( a , b ) { for ( var d = - 1 , e = this . children . length , f = [ ] ; ++ d < e ; ) { var g = this . children [ d ] ; ( ! b || b && g . exists ) && a ( g , d , this . children ) && f . push ( g ) } return new c . ArraySet ( f ) } , c . Group . prototype . forEach = function ( a , b , c ) { if ( "undefined" == typeof c && ( c = ! 1 ) , arguments . length <= 3 ) for ( var d = 0 , e = this . children . length ; e > d ; d ++ ) ( ! c || c && this . children [ d ] . exists ) && a . call ( b , this . children [ d ] ) ; else { for ( var f = [ null ] , d = 3 ; d < arguments . length ; d ++ ) f . push ( arguments [ d ] ) ; for ( var d = 0 , e = this . children . length ; e > d ; d ++ ) ( ! c || c && this . children [ d ] . exists ) && ( f [ 0 ] = this . children [ d ] , a . apply ( b , f ) ) } } , c . Group . prototype . forEachExists = function ( a , b ) { var d ; if ( arguments . length > 2 ) { d = [ null ] ; for ( var e = 2 ; e < arguments . length ; e ++ ) d . push ( arguments [ e ] ) } this . iterate ( "exists" , ! 0 , c . Group . RETURN _TOTAL , a , b , d ) } , c . Group . prototype . forEachAlive = function ( a , b ) { var d ; if ( arguments . length > 2 ) { d = [ null ] ; for ( var e = 2 ; e < arguments . length ; e ++ ) d . push ( arguments [ e ] ) } this . iterate ( "alive" , ! 0 , c . Group . RETURN _TOTAL , a , b , d ) } , c . Group . prototype . forEachDead = function ( a , b ) { var d ; if ( arguments . length > 2 ) { d = [ null ] ; for ( var e = 2 ; e < arguments . length ; e ++ ) d . push ( arguments [ e ] ) } this . iterate ( "alive" , ! 1 , c . Group . RETURN _TOTAL , a , b , d ) } , c . Group . prototype . sort = function ( a , b ) { this . children . length < 2 || ( "undefined" == typeof a && ( a = "z" ) , "undefined" == typeof b && ( b = c . Group . SORT _ASCENDING ) , this . _sortProperty = a , this . children . sort ( b === c . Group . SORT _ASCENDING ? this . ascendingSortHandler . bind ( this ) : this . descendingSortHandler . bind ( this ) ) , this . updateZ ( ) ) } , c . Group . prototype . customSort = function ( a , b ) { this . children . length < 2 || ( this . children . sort ( a . bind ( b ) ) , this . updateZ ( ) ) } , c . Group . prototype . ascendingSortHandler = function ( a , b ) { return a [ this . _sortProperty ] < b [ this . _sortProperty ] ? - 1 : a [ this . _sortProperty ] > b [ this . _sortProperty ] ? 1 : a . z < b . z ? - 1 : 1 } , c . Group . prototype . descendingSortHandler = function ( a , b ) { return a [ this . _sortProperty ] < b [ this . _sortProperty ] ? 1 : a [ this . _sortProperty ] > b [ this . _sortProperty ] ? - 1 : 0 } , c . Group
} , set : function ( a ) { return a !== this . _scaleMode && ( this . isFullScreen || ( this . updateDimensions ( this . _gameSize . width , this . _gameSize . height , ! 0 ) , this . queueUpdate ( ! 0 ) ) , this . _scaleMode = a ) , this . _scaleMode } } ) , Object . defineProperty ( c . ScaleManager . prototype , "fullScreenScaleMode" , { get : function ( ) { return this . _fullScreenScaleMode } , set : function ( a ) { return a !== this . _fullScreenScaleMode && ( this . isFullScreen ? ( this . prepScreenMode ( ! 1 ) , this . _fullScreenScaleMode = a , this . prepScreenMode ( ! 0 ) , this . queueUpdate ( ! 0 ) ) : this . _fullScreenScaleMode = a ) , this . _fullScreenScaleMode } } ) , Object . defineProperty ( c . ScaleManager . prototype , "currentScaleMode" , { get : function ( ) { return this . isFullScreen ? this . _fullScreenScaleMode : this . _scaleMode } } ) , Object . defineProperty ( c . ScaleManager . prototype , "pageAlignHorizontally" , { get : function ( ) { return this . _pageAlignHorizontally } , set : function ( a ) { a !== this . _pageAlignHorizontally && ( this . _pageAlignHorizontally = a , this . queueUpdate ( ! 0 ) ) } } ) , Object . defineProperty ( c . ScaleManager . prototype , "pageAlignVertically" , { get : function ( ) { return this . _pageAlignVertically } , set : function ( a ) { a !== this . _pageAlignVertically && ( this . _pageAlignVertically = a , this . queueUpdate ( ! 0 ) ) } } ) , Object . defineProperty ( c . ScaleManager . prototype , "isFullScreen" , { get : function ( ) { return ! ! ( document . fullscreenElement || document . webkitFullscreenElement || document . mozFullScreenElement || document . msFullscreenElement ) } } ) , Object . defineProperty ( c . ScaleManager . prototype , "isPortrait" , { get : function ( ) { return "portrait" === this . classifyOrientation ( this . screenOrientation ) } } ) , Object . defineProperty ( c . ScaleManager . prototype , "isLandscape" , { get : function ( ) { return "landscape" === this . classifyOrientation ( this . screenOrientation ) } } ) , Object . defineProperty ( c . ScaleManager . prototype , "orientation" , { get : function ( ) { return "portrait" === this . classifyOrientation ( this . screenOrientation ) ? 0 : 90 } } ) , c . Game = function ( a , b , d , e , f , g , h , i ) { return this . id = c . GAMES . push ( this ) - 1 , this . config = null , this . physicsConfig = i , this . parent = "" , this . width = 800 , this . height = 600 , this . _width = 800 , this . _height = 600 , this . transparent = ! 1 , this . antialias = ! 0 , this . preserveDrawingBuffer = ! 1 , this . renderer = null , this . renderType = c . AUTO , this . state = null , this . isBooted = ! 1 , this . isRunning = ! 1 , this . raf = null , this . add = null , this . make = 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 = c . Device , this . camera = null , this . canvas = null , this . context = null , this . debug = null , this . particles = null , this . stepping = ! 1 , this . pendingStep = ! 1 , this . stepCount = 0 , this . onPause = null , this . onResume = null , this . onBlur = null , this . onFocus = null , this . _paused = ! 1 , this . _codePaused = ! 1 , this . _deltaTime = 0 , this . _lastCount = 0 , this . _spiralling = 0 , this . fpsProblemNotifier = new c . Signal , this . forceSingleUpdate = ! 1 , this . _nextFpsNotification = 0 , 1 === arguments . length && "object" == typeof arguments [ 0 ] ? this . parseConfig ( arguments [ 0 ] ) : ( this . config = { enableDebug : ! 0 } , "undefined" != typeof a && ( this . _width = a ) , "undefined" != typeof b && ( this . _height = b ) , "undefined" != typeof d && ( this . renderType = d ) , "undefined" != typeof e && ( this . parent = e ) , "undefined" != typeof g && ( this . transparent = g ) , "undefined" != typeof h && ( this . antialias = h ) , this . rnd = new c . RandomDataGenerator ( [ ( Date . now ( ) * Math . random ( ) ) . toString ( ) ] ) , this . state = new c . StateManager ( this , f ) ) , this . device . whenReady ( this . boot , this ) , this } , c . Game . prototype = { parseConfig : function ( a ) { this . config = a , "undefined" == typeof a . enableDebug && ( this . config . enableDebug = ! 0 ) , a . width && ( this . _width = a . width ) , a . height && ( this . _height = a . height ) , a . renderer && ( this . renderType = a . renderer ) , a . parent && ( this . parent = a . parent ) , a . transparent && ( this . transparent = a . transparent ) , a . antialias && ( this . antialias = a . antialias ) , a . preserveDrawingBuffer && ( this . preserveDrawingBuffer = a . preserveDrawingBuffer ) , a . physicsConfig && ( this . physicsConfig = a . physicsConfig ) ; var b = [ ( Date . now ( ) * Math . random ( ) ) . toString ( ) ] ; a . seed && ( b = a . seed ) , this . rnd = new c . RandomDataGenerator ( b ) ; var d = null ; a . state && ( d = a . state ) , this . state = new c . StateManager ( this , d ) } , boot : function ( ) { this . isBooted || ( this . onPause = new c . Signal , this . onResume = new c . Signal , this . onBlur = new c .
} , set : function ( a ) { this . enabled = ! a } } ) , a . prototype = { } , a . prototype . constructor = a , a . prototype . bindEvent = function ( b ) { if ( ! a . _stubsGenerated && b ) { var c = function ( a ) { return function ( ) { var b = this . originalEvent [ a ] ; return "function" != typeof b ? b : b . bind ( this . originalEvent ) } } ; for ( var d in b ) d in a . prototype || Object . defineProperty ( a . prototype , d , { get : c ( d ) } ) ; a . _stubsGenerated = ! 0 } return this . originalEvent = b , this } , Object . defineProperties ( a . prototype , { type : { value : "wheel" } , deltaMode : { get : function ( ) { return this . _deltaMode } } , deltaY : { get : function ( ) { return this . _scaleFactor * ( this . originalEvent . wheelDelta || this . originalEvent . detail ) || 0 } } , deltaX : { get : function ( ) { return this . _scaleFactor * this . originalEvent . wheelDeltaX || 0 } } , deltaZ : { value : 0 } } ) , c . MSPointer = function ( a ) { this . game = a , this . callbackContext = this . game , this . enabled = ! 0 , this . _onMSPointerDown = null , this . _onMSPointerMove = null , this . _onMSPointerUp = null } , c . MSPointer . prototype = { start : function ( ) { if ( null === this . _onMSPointerDown ) { var a = this ; this . game . device . mspointer && ( this . _onMSPointerDown = function ( b ) { return a . onPointerDown ( b ) } , this . _onMSPointerMove = function ( b ) { return a . onPointerMove ( b ) } , this . _onMSPointerUp = function ( b ) { return a . onPointerUp ( b ) } , this . game . canvas . addEventListener ( "MSPointerDown" , this . _onMSPointerDown , ! 1 ) , this . game . canvas . addEventListener ( "MSPointerMove" , this . _onMSPointerMove , ! 1 ) , this . game . canvas . addEventListener ( "MSPointerUp" , this . _onMSPointerUp , ! 1 ) , this . game . canvas . addEventListener ( "pointerDown" , this . _onMSPointerDown , ! 1 ) , this . game . canvas . addEventListener ( "pointerMove" , this . _onMSPointerMove , ! 1 ) , this . game . canvas . addEventListener ( "pointerUp" , this . _onMSPointerUp , ! 1 ) , this . game . canvas . style [ "-ms-content-zooming" ] = "none" , this . game . canvas . style [ "-ms-touch-action" ] = "none" ) } } , onPointerDown : function ( a ) { this . game . input . enabled && this . enabled && ( a . preventDefault ( ) , a . identifier = a . pointerId , this . game . input . startPointer ( a ) ) } , onPointerMove : function ( a ) { this . game . input . enabled && this . enabled && ( a . preventDefault ( ) , a . identifier = a . pointerId , this . game . input . updatePointer ( a ) ) } , onPointerUp : function ( a ) { this . game . input . enabled && this . enabled && ( a . preventDefault ( ) , a . identifier = a . pointerId , this . game . input . stopPointer ( a ) ) } , stop : function ( ) { this . game . canvas . removeEventListener ( "MSPointerDown" , this . _onMSPointerDown ) , this . game . canvas . removeEventListener ( "MSPointerMove" , this . _onMSPointerMove ) , this . game . canvas . removeEventListener ( "MSPointerUp" , this . _onMSPointerUp ) , this . game . canvas . removeEventListener ( "pointerDown" , this . _onMSPointerDown ) , this . game . canvas . removeEventListener ( "pointerMove" , this . _onMSPointerMove ) , this . game . canvas . removeEventListener ( "pointerUp" , this . _onMSPointerUp ) } } , c . MSPointer . prototype . constructor = c . MSPointer , Object . defineProperty ( c . MSPointer . prototype , "disabled" , { get : function ( ) { return ! this . enabled } , set : function ( a ) { this . enabled = ! a } } ) , c . Pointer = function ( a , b ) { this . game = a , this . id = b , this . type = c . POINTER , this . exists = ! 0 , this . identifier = 0 , this . pointerId = null , this . target = null , this . button = null , this . _holdSent = ! 1 , this . _history = [ ] , this . _nextDrop = 0 , this . _stateReset = ! 1 , this . withinGame = ! 1 , this . clientX = - 1 , this . clientY = - 1 , this . pageX = - 1 , this . pageY = - 1 , this . screenX = - 1 , this . screenY = - 1 , this . rawMovementX = 0 , this . rawMovementY = 0 , this . movementX = 0 , this . movementY = 0 , this . x = - 1 , this . y = - 1 , this . isMouse = ! 1 , this . isDown = ! 1 , this . isUp = ! 0 , this . timeDown = 0 , this . timeUp = 0 , this . previousTapTime = 0 , this . totalTouches = 0 , this . msSinceLastClick = Number . MAX _VALUE , this . targetObject = null , this . active = ! 1 , this . dirty = ! 1 , this . position = new c . Point , this . positionDown = new c . Point , this . positionUp = new c . Point , this . circle = new c . Circle ( 0 , 0 , 44 ) , 0 === b && ( this . isMouse = ! 0 ) , this . _clickTrampolines = null , this . _trampolineTargetObject = null } , c . Pointer . prototype = { start : function ( a ) { return a . pointerId && ( this . pointerId = a . pointerId ) , this . identifier = a . identifier , this . target = a . target , "undefined" != typeof a . button && ( this . button = a . button ) , this . _history = [ ] , this . active = ! 0 , this . withinGame = ! 0 , this . isDown = ! 0 , this . isUp = ! 1 , this . dirty = ! 1 , this . _clickTrampolines = null , this . _trampolineTargetObject = null , this . msSinceLastClick = this . game . time . time - this . timeDown , this . timeDown = this . game . time . time , this . _holdSent = ! 1 , this . move ( a ,
} , _pointerOverHandler : function ( a ) { null !== this . sprite && ( this . _pointerData [ a . id ] . isOver === ! 1 || a . dirty ) && ( this . _pointerData [ a . id ] . isOver = ! 0 , this . _pointerData [ a . id ] . isOut = ! 1 , this . _pointerData [ a . id ] . timeOver = this . game . time . time , this . _pointerData [ a . id ] . x = a . x - this . sprite . x , this . _pointerData [ a . id ] . y = a . y - this . sprite . y , this . useHandCursor && this . _pointerData [ a . id ] . isDragged === ! 1 && ( this . game . canvas . style . cursor = "pointer" , this . _setHandCursor = ! 0 ) , this . sprite && this . sprite . events && this . sprite . events . onInputOver . dispatch ( this . sprite , a ) ) } , _pointerOutHandler : function ( a ) { null !== this . sprite && ( this . _pointerData [ a . id ] . isOver = ! 1 , this . _pointerData [ a . id ] . isOut = ! 0 , this . _pointerData [ a . id ] . timeOut = this . game . time . time , this . useHandCursor && this . _pointerData [ a . id ] . isDragged === ! 1 && ( this . game . canvas . style . cursor = "default" , this . _setHandCursor = ! 1 ) , this . sprite && this . sprite . events && this . sprite . events . onInputOut . dispatch ( this . sprite , a ) ) } , _touchedHandler : function ( a ) { if ( null !== this . sprite ) { if ( this . _pointerData [ a . id ] . isDown === ! 1 && this . _pointerData [ a . id ] . isOver === ! 0 ) { if ( this . pixelPerfectClick && ! this . checkPixel ( null , null , a ) ) return ; this . _pointerData [ a . id ] . isDown = ! 0 , this . _pointerData [ a . id ] . isUp = ! 1 , this . _pointerData [ a . id ] . timeDown = this . game . time . time , this . sprite && this . sprite . events && this . sprite . events . onInputDown . dispatch ( this . sprite , a ) , a . dirty = ! 0 , this . draggable && this . isDragged === ! 1 && this . startDrag ( a ) , this . bringToTop && this . sprite . bringToTop ( ) } return this . consumePointerEvent } } , _releasedHandler : function ( a ) { null !== this . sprite && this . _pointerData [ a . id ] . isDown && a . isUp && ( this . _pointerData [ a . id ] . isDown = ! 1 , this . _pointerData [ a . id ] . isUp = ! 0 , this . _pointerData [ a . id ] . timeUp = this . game . time . time , this . _pointerData [ a . id ] . downDuration = this . _pointerData [ a . id ] . timeUp - this . _pointerData [ a . id ] . timeDown , this . checkPointerOver ( a ) ? this . sprite && this . sprite . events && this . sprite . events . onInputUp . dispatch ( this . sprite , a , ! 0 ) : ( this . sprite && this . sprite . events && this . sprite . events . onInputUp . dispatch ( this . sprite , a , ! 1 ) , this . useHandCursor && ( this . game . canvas . style . cursor = "default" , this . _setHandCursor = ! 1 ) ) , a . dirty = ! 0 , this . draggable && this . isDragged && this . _draggedPointerID === a . id && this . stopDrag ( a ) ) } , updateDrag : function ( a ) { if ( a . isUp ) return this . stopDrag ( a ) , ! 1 ; var b = this . globalToLocalX ( a . x ) + this . _dragPoint . x + this . dragOffset . x , c = this . globalToLocalY ( a . y ) + this . _dragPoint . y + this . dragOffset . y ; return this . sprite . fixedToCamera ? ( this . allowHorizontalDrag && ( this . sprite . cameraOffset . x = b ) , this . allowVerticalDrag && ( this . sprite . cameraOffset . y = c ) , this . boundsRect && this . checkBoundsRect ( ) , this . boundsSprite && this . checkBoundsSprite ( ) , this . snapOnDrag && ( this . sprite . cameraOffset . x = Math . round ( ( this . sprite . cameraOffset . x - this . snapOffsetX % this . snapX ) / this . snapX ) * this . snapX + this . snapOffsetX % this . snapX , this . sprite . cameraOffset . y = Math . round ( ( this . sprite . cameraOffset . y - this . snapOffsetY % this . snapY ) / this . snapY ) * this . snapY + this . snapOffsetY % this . snapY ) ) : ( this . allowHorizontalDrag && ( this . sprite . x = b ) , this . allowVerticalDrag && ( this . sprite . y = c ) , this . boundsRect && this . checkBoundsRect ( ) , this . boundsSprite && this . checkBoundsSprite ( ) , this . snapOnDrag && ( this . sprite . x = Math . round ( ( this . sprite . x - this . snapOffsetX % this . snapX ) / this . snapX ) * this . snapX + this . snapOffsetX % this . snapX , this . sprite . y = Math . round ( ( this . sprite . y - this . snapOffsetY % this . snapY ) / this . snapY ) * this . snapY + this . snapOffsetY % this . snapY ) ) , ! 0 } , justOver : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isOver && this . overDuration ( a ) < b } , justOut : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isOut && this . game . time . time - this . _pointerData [ a ] . timeOut < b } , justPressed : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isDown && this . downDuration ( a ) < b } , justReleased : function ( a , b ) { return a = a || 0 , b = b || 500 , this . _pointerData [ a ] . isUp && this . game . time . time - this . _pointerData [ a ] . timeUp < b } , overDuration : function ( a ) { return a = a || 0 , this . _pointerData [ a ] . isOver ? this . game . time . time - this . _pointerData [ a ] . timeOver : - 1 } , downDuration : function ( a ) { return a = a || 0 , this . _pointerData [ a ] . isDown ? this . game . time . time - this . _pointerData [ a ] . timeDown : - 1 } , enableDrag : function ( a , b , d , e , f , g ) { "undefined" == typeof a && ( a = ! 1 ) , "undefined" == typeof b && ( b =
} , c . Sprite . prototype . setFrame = function ( a ) { this . _frame = a , this . texture . frame . x = a . x , this . texture . frame . y = a . y , this . texture . frame . width = a . width , this . texture . frame . height = a . height , this . texture . crop . x = a . x , this . texture . crop . y = a . y , this . texture . crop . width = a . width , this . texture . crop . height = a . height , a . trimmed ? ( this . texture . trim ? ( this . texture . trim . x = a . spriteSourceSizeX , this . texture . trim . y = a . spriteSourceSizeY , this . texture . trim . width = a . sourceSizeW , this . texture . trim . height = a . sourceSizeH ) : this . texture . trim = { x : a . spriteSourceSizeX , y : a . spriteSourceSizeY , width : a . sourceSizeW , height : a . sourceSizeH } , this . texture . width = a . sourceSizeW , this . texture . height = a . sourceSizeH , this . texture . frame . width = a . sourceSizeW , this . texture . frame . height = a . sourceSizeH ) : ! a . trimmed && this . texture . trim && ( this . texture . trim = null ) , this . cropRect && this . updateCrop ( ) , this . texture . _updateUvs ( ) } , c . Sprite . prototype . resetFrame = function ( ) { this . _frame && this . setFrame ( this . _frame ) } , c . Sprite . prototype . crop = function ( a , b ) { "undefined" == typeof b && ( b = ! 1 ) , a ? ( b && null !== this . cropRect ? this . cropRect . setTo ( a . x , a . y , a . width , a . height ) : this . cropRect = b && null === this . cropRect ? new c . Rectangle ( a . x , a . y , a . width , a . height ) : a , this . updateCrop ( ) ) : ( this . _crop = null , this . cropRect = null , this . resetFrame ( ) ) } , c . Sprite . prototype . updateCrop = function ( ) { if ( this . cropRect ) { this . _crop = c . Rectangle . clone ( this . cropRect , this . _crop ) , this . _crop . x += this . _frame . x , this . _crop . y += this . _frame . y ; var a = Math . max ( this . _frame . x , this . _crop . x ) , b = Math . max ( this . _frame . y , this . _crop . y ) , d = Math . min ( this . _frame . right , this . _crop . right ) - a , e = Math . min ( this . _frame . bottom , this . _crop . bottom ) - b ; this . texture . crop . x = a , this . texture . crop . y = b , this . texture . crop . width = d , this . texture . crop . height = e , this . texture . frame . width = Math . min ( d , this . cropRect . width ) , this . texture . frame . height = Math . min ( e , this . cropRect . height ) , this . texture . width = this . texture . frame . width , this . texture . height = this . texture . frame . height , this . texture . _updateUvs ( ) } } , c . Sprite . prototype . revive = function ( a ) { return "undefined" == typeof a && ( a = 1 ) , this . alive = ! 0 , this . exists = ! 0 , this . visible = ! 0 , this . health = a , this . events && this . events . onRevived . dispatch ( this ) , this } , c . Sprite . prototype . kill = function ( ) { return this . alive = ! 1 , this . exists = ! 1 , this . visible = ! 1 , this . events && this . events . onKilled . dispatch ( this ) , this } , c . Sprite . prototype . destroy = function ( a ) { if ( null !== this . game && 1 !== this . _cache [ 8 ] ) { "undefined" == typeof a && ( a = ! 0 ) , this . _cache [ 8 ] = 1 , this . events && this . events . onDestroy . dispatch ( this ) , this . parent && ( this . parent instanceof c . Group ? this . parent . remove ( this ) : this . parent . removeChild ( this ) ) , this . input && this . input . destroy ( ) , this . animations && this . animations . destroy ( ) , this . body && this . body . destroy ( ) , this . events && this . events . destroy ( ) ; var b = this . children . length ; if ( a ) for ( ; b -- ; ) this . children [ b ] . destroy ( a ) ; else for ( ; b -- ; ) this . removeChild ( this . children [ b ] ) ; this . _crop && ( this . _crop = null ) , this . _frame && ( this . _frame = null ) , this . alive = ! 1 , this . exists = ! 1 , this . visible = ! 1 , this . filters = null , this . mask = null , this . game = null , this . _cache [ 8 ] = 0 } } , c . Sprite . prototype . damage = function ( a ) { return this . alive && ( this . health -= a , this . health <= 0 && this . kill ( ) ) , this } , c . Sprite . prototype . reset = function ( a , b , c ) { return "undefined" == typeof c && ( c = 1 ) , this . world . setTo ( a , b ) , this . position . x = a , this . position . y = b , this . alive = ! 0 , this . exists = ! 0 , this . visible = ! 0 , this . renderable = ! 0 , this . _outOfBoundsFired = ! 1 , this . health = c , this . body && this . body . reset ( a , b , ! 1 , ! 1 ) , this . _cache [ 4 ] = 1 , this } , c . Sprite . prototype . bringToTop = function ( ) { return this . parent && this . parent . bringToTop ( this ) , this } , c . Sprite . prototype . play = function ( a , b , c , d ) { return this . animations ? this . animations . play ( a , b , c , d ) : void 0 } , c . Sprite . prototype . overlap = function ( a ) { return c . Rectangle . intersects ( this . getBounds ( ) , a . getBounds ( ) ) } , c . Sprite . prototype . checkTransform = function ( a ) { this . scaleMin && ( a . a < this . scaleMin . x && ( a . a = this . scaleMin . x ) , a . d < this . scaleMin . y && ( a . d = this . scaleMin . y ) ) , this . scaleMax && ( a . a > this . scaleMax . x && ( a . a = this . scaleMax . x ) , a . d > this . scaleMax . y && ( a . d = this . scaleMax . y ) ) } , c . Sprite . prototype . setScaleMinMax = function ( a , b , d , e ) { "undefined" == typeof b ? b = d = e = a : "undefined" == typeof d && ( d = e = b , b = a ) , null === a ? this . scaleMin = null : this . scaleMin ? this . scaleMin . set ( a , b ) : t
this . exists = ! 1 , this . visible = ! 1 , this . filters = null , this . mask = null , this . game = null , this . _cache [ 8 ] = 0 } } , c . Text . prototype . setShadow = function ( a , b , c , d ) { this . style . shadowOffsetX = a || 0 , this . style . shadowOffsetY = b || 0 , this . style . shadowColor = c || "rgba(0,0,0,0)" , this . style . shadowBlur = d || 0 , this . dirty = ! 0 } , c . Text . prototype . setStyle = function ( a ) { a = a || { } , a . font = a . font || "bold 20pt Arial" , a . fill = a . fill || "black" , a . align = a . align || "left" , a . stroke = a . stroke || "black" , a . strokeThickness = a . strokeThickness || 0 , a . wordWrap = a . wordWrap || ! 1 , a . wordWrapWidth = a . wordWrapWidth || 100 , a . shadowOffsetX = a . shadowOffsetX || 0 , a . shadowOffsetY = a . shadowOffsetY || 0 , a . shadowColor = a . shadowColor || "rgba(0,0,0,0)" , a . shadowBlur = a . shadowBlur || 0 , this . style = a , this . dirty = ! 0 } , c . Text . prototype . updateText = function ( ) { this . texture . baseTexture . resolution = this . resolution , this . context . font = this . style . font ; var a = this . text ; this . style . wordWrap && ( a = this . runWordWrap ( this . text ) ) ; for ( var b = a . split ( /(?:\r\n|\r|\n)/ ) , c = [ ] , d = 0 , e = this . determineFontProperties ( this . style . font ) , f = 0 ; f < b . length ; f ++ ) { var g = this . context . measureText ( b [ f ] ) . width ; c [ f ] = g , d = Math . max ( d , g ) } var h = d + this . style . strokeThickness ; this . canvas . width = h * this . resolution ; var i = e . fontSize + this . style . strokeThickness , j = i * b . length ; this . canvas . height = j * this . resolution , this . context . scale ( this . resolution , this . resolution ) , navigator . isCocoonJS && this . context . clearRect ( 0 , 0 , this . canvas . width , this . canvas . height ) , this . context . fillStyle = this . style . fill , this . context . font = this . style . font , this . context . strokeStyle = this . style . stroke , this . context . textBaseline = "alphabetic" , this . context . shadowOffsetX = this . style . shadowOffsetX , this . context . shadowOffsetY = this . style . shadowOffsetY , this . context . shadowColor = this . style . shadowColor , this . context . shadowBlur = this . style . shadowBlur , this . context . lineWidth = this . style . strokeThickness , this . context . lineCap = "round" , this . context . lineJoin = "round" ; var k , l ; for ( this . _charCount = 0 , f = 0 ; f < b . length ; f ++ ) k = this . style . strokeThickness / 2 , l = this . style . strokeThickness / 2 + f * i + e . ascent , "right" === this . style . align ? k += d - c [ f ] : "center" === this . style . align && ( k += ( d - c [ f ] ) / 2 ) , l += this . _lineSpacing , this . colors . length > 0 ? this . updateLine ( b [ f ] , k , l ) : ( this . style . stroke && this . style . strokeThickness && this . context . strokeText ( b [ f ] , k , l ) , this . style . fill && this . context . fillText ( b [ f ] , k , l ) ) ; this . updateTexture ( ) } , c . Text . prototype . updateLine = function ( a , b , c ) { for ( var d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] ; this . colors [ this . _charCount ] && ( this . context . fillStyle = this . colors [ this . _charCount ] , this . context . strokeStyle = this . colors [ this . _charCount ] ) , this . style . stroke && this . style . strokeThickness && this . context . strokeText ( e , b , c ) , this . style . fill && this . context . fillText ( e , b , c ) , b += this . context . measureText ( e ) . width , this . _charCount ++ } } , c . Text . prototype . clearColors = function ( ) { this . colors = [ ] , this . dirty = ! 0 } , c . Text . prototype . addColor = function ( a , b ) { this . colors [ b ] = a , this . dirty = ! 0 } , c . Text . prototype . runWordWrap = function ( a ) { for ( var b = "" , c = a . split ( "\n" ) , d = 0 ; d < c . length ; d ++ ) { for ( var e = this . style . wordWrapWidth , f = c [ d ] . split ( " " ) , g = 0 ; g < f . length ; g ++ ) { var h = this . context . measureText ( f [ g ] ) . width , i = h + this . context . measureText ( " " ) . width ; i > e ? ( g > 0 && ( b += "\n" ) , b += f [ g ] + " " , e = this . style . wordWrapWidth - h ) : ( e -= i , b += f [ g ] + " " ) } d < c . length - 1 && ( b += "\n" ) } return b } , Object . defineProperty ( c . Text . prototype , "angle" , { get : function ( ) { return c . Math . radToDeg ( this . rotation ) } , set : function ( a ) { this . rotation = c . Math . degToRad ( a ) } } ) , Object . defineProperty ( c . Text . prototype , "text" , { get : function ( ) { return this . _text } , set : function ( a ) { a !== this . _text && ( this . _text = a . toString ( ) || " " , this . dirty = ! 0 , this . parent && this . updateTransform ( ) ) } } ) , Object . defineProperty ( c . Text . prototype , "font" , { get : function ( ) { return this . _font } , set : function ( a ) { a !== this . _font && ( this . _font = a . trim ( ) , this . style . font = this . _fontWeight + " " + this . _fontSize + "px '" + this . _font + "'" , this . dirty = ! 0 , this . parent && this . updateTransform ( ) ) } } ) , Object . defineProperty ( c . Text . prototype , "fontSize" , { get : function ( ) { return this . _fontSize } , set : function ( a ) { a = parseInt ( a , 10 ) , a !== this . _fontSize && ( this . _fontSize = a , this . style . font = this . _fontWeight + " " + this . _fontSize + "px '" + this . _font + "'" , this . dirty = ! 0 , this . parent && this . updateTransform ( ) ) } } ) , Object . d
} function i ( ) { if ( "undefined" == typeof Uint8ClampedArray ) return ! 1 ; var a = document . createElement ( "canvas" ) , b = a . getContext ( "2d" ) ; if ( ! b ) return ! 1 ; var c = b . createImageData ( 1 , 1 ) ; return c . data instanceof Uint8ClampedArray } function j ( ) { var a , b = document . createElement ( "p" ) , c = { webkitTransform : "-webkit-transform" , OTransform : "-o-transform" , msTransform : "-ms-transform" , MozTransform : "-moz-transform" , transform : "transform" } ; document . body . insertBefore ( b , null ) ; for ( var d in c ) void 0 !== b . style [ d ] && ( b . style [ d ] = "translate3d(1px,1px,1px)" , a = window . getComputedStyle ( b ) . getPropertyValue ( c [ d ] ) ) ; document . body . removeChild ( b ) , k . css3D = void 0 !== a && a . length > 0 && "none" !== a } var k = this ; a ( ) , f ( ) , e ( ) , j ( ) , g ( ) , b ( ) , d ( ) , c ( ) } , c . Device . canPlayAudio = function ( a ) { return "mp3" == a && this . mp3 ? ! 0 : "ogg" == a && ( this . ogg || this . opus ) ? ! 0 : "m4a" == a && this . m4a ? ! 0 : "opus" == a && this . opus ? ! 0 : "wav" == a && this . wav ? ! 0 : "webm" == a && this . webm ? ! 0 : ! 1 } , c . Device . isConsoleOpen = function ( ) { return window . console && window . console . firebug ? ! 0 : window . console && ( console . profile ( ) , console . profileEnd ( ) , console . clear && console . clear ( ) , console . profiles ) ? console . profiles . length > 0 : ! 1 } , c . Device . isAndroidStockBrowser = function ( ) { var a = window . navigator . userAgent . match ( /Android.*AppleWebKit\/([\d.]+)/ ) ; return a && a [ 1 ] < 537 } , c . DOM = { getOffset : function ( a , b ) { b = b || new c . Point ; var d = a . getBoundingClientRect ( ) , e = c . DOM . scrollY , f = c . DOM . scrollX , g = document . documentElement . clientTop , h = document . documentElement . clientLeft ; return b . x = d . left + f - h , b . y = d . top + e - g , b } , getBounds : function ( a , b ) { return "undefined" == typeof b && ( b = 0 ) , a = a && ! a . nodeType ? a [ 0 ] : a , a && 1 === a . nodeType ? this . calibrate ( a . getBoundingClientRect ( ) , b ) : ! 1 } , calibrate : function ( a , b ) { b = + b || 0 ; var c = { width : 0 , height : 0 , left : 0 , right : 0 , top : 0 , bottom : 0 } ; return c . width = ( c . right = a . right + b ) - ( c . left = a . left - b ) , c . height = ( c . bottom = a . bottom + b ) - ( c . top = a . top - b ) , c } , getAspectRatio : function ( a ) { a = null == a ? this . visualBounds : 1 === a . nodeType ? this . getBounds ( a ) : a ; var b = a . width , c = a . height ; return "function" == typeof b && ( b = b . call ( a ) ) , "function" == typeof c && ( c = c . call ( a ) ) , b / c } , inLayoutViewport : function ( a , b ) { var c = this . getBounds ( a , b ) ; return ! ! c && c . bottom >= 0 && c . right >= 0 && c . top <= this . layoutBounds . width && c . left <= this . layoutBounds . height } , getScreenOrientation : function ( a ) { var b = window . screen , c = b . orientation || b . mozOrientation || b . msOrientation ; if ( c && "string" == typeof c . type ) return c . type ; if ( "string" == typeof c ) return c ; var d = "portrait-primary" , e = "landscape-primary" ; if ( "screen" === a ) return b . height > b . width ? d : e ; if ( "viewport" === a ) return this . visualBounds . height > this . visualBounds . width ? d : e ; if ( "window.orientation" === a && "number" == typeof window . orientation ) return 0 === window . orientation || 180 === window . orientation ? d : e ; if ( window . matchMedia ) { if ( window . matchMedia ( "(orientation: portrait)" ) . matches ) return d ; if ( window . matchMedia ( "(orientation: landscape)" ) . matches ) return e } return this . visualBounds . height > this . visualBounds . width ? d : e } , visualBounds : new c . Rectangle , layoutBounds : new c . Rectangle , documentBounds : new c . Rectangle } , c . Device . whenReady ( function ( a ) { var b = window && "pageXOffset" in window ? function ( ) { return window . pageXOffset } : function ( ) { return document . documentElement . scrollLeft } , d = window && "pageYOffset" in window ? function ( ) { return window . pageYOffset } : function ( ) { return document . documentElement . scrollTop } ; Object . defineProperty ( c . DOM , "scrollX" , { get : b } ) , Object . defineProperty ( c . DOM , "scrollY" , { get : d } ) , Object . defineProperty ( c . DOM . visualBounds , "x" , { get : b } ) , Object . defineProperty ( c . DOM . visualBounds , "y" , { get : d } ) , Object . defineProperty ( c . DOM . layoutBounds , "x" , { value : 0 } ) , Object . defineProperty ( c . DOM . layoutBounds , "y" , { value : 0 } ) ; var e = a . desktop && document . documentElement . clientWidth <= window . innerWidth && document . documentElement . clientHeight <= window . innerHeight ; if ( e ) { var f = function ( ) { return document . documentElement . clientWidth } , g = function ( ) { return document . documentElement . clientHeight } ; Object . defineProperty ( c . DOM . visualBounds , "width" , { get : f } ) , Object . defineProperty ( c . DOM . visualBounds , "height" , { get : g } ) , Object . defineProperty ( c . DOM . layoutBounds , "width" , { get : f } ) , Object . defineProperty ( c . DOM . layoutBounds , "height" , { get : g } ) } else Object . defineProperty ( c . DOM . visualBounds , "width" , { get : function ( ) { re
else { for ( var a in this . vStartCache ) this . vStart [ a ] = this . vStartCache [ a ] , this . vEnd [ a ] = this . vEndCache [ a ] ; this . repeatCounter > 0 && this . repeatCounter -- } return this . startTime = this . game . time . time + this . delay , this . dt = this . parent . reverse ? this . duration : 0 , c . TweenData . LOOPED } } , c . TweenData . prototype . constructor = c . TweenData , c . Easing = { Linear : { None : function ( a ) { return a } } , Quadratic : { In : function ( a ) { return a * a } , Out : function ( a ) { return a * ( 2 - a ) } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a : - . 5 * ( -- a * ( a - 2 ) - 1 ) } } , Cubic : { In : function ( a ) { return a * a * a } , Out : function ( a ) { return -- a * a * a + 1 } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a * a : . 5 * ( ( a -= 2 ) * a * a + 2 ) } } , Quartic : { In : function ( a ) { return a * a * a * a } , Out : function ( a ) { return 1 - -- a * a * a * a } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a * a * a : - . 5 * ( ( a -= 2 ) * a * a * a - 2 ) } } , Quintic : { In : function ( a ) { return a * a * a * a * a } , Out : function ( a ) { return -- a * a * a * a * a + 1 } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? . 5 * a * a * a * a * a : . 5 * ( ( a -= 2 ) * a * a * a * a + 2 ) } } , Sinusoidal : { In : function ( a ) { return 1 - Math . cos ( a * Math . PI / 2 ) } , Out : function ( a ) { return Math . sin ( a * Math . PI / 2 ) } , InOut : function ( a ) { return . 5 * ( 1 - Math . cos ( Math . PI * a ) ) } } , Exponential : { In : function ( a ) { return 0 === a ? 0 : Math . pow ( 1024 , a - 1 ) } , Out : function ( a ) { return 1 === a ? 1 : 1 - Math . pow ( 2 , - 10 * a ) } , InOut : function ( a ) { return 0 === a ? 0 : 1 === a ? 1 : ( a *= 2 ) < 1 ? . 5 * Math . pow ( 1024 , a - 1 ) : . 5 * ( - Math . pow ( 2 , - 10 * ( a - 1 ) ) + 2 ) } } , Circular : { In : function ( a ) { return 1 - Math . sqrt ( 1 - a * a ) } , Out : function ( a ) { return Math . sqrt ( 1 - -- a * a ) } , InOut : function ( a ) { return ( a *= 2 ) < 1 ? - . 5 * ( Math . sqrt ( 1 - a * a ) - 1 ) : . 5 * ( Math . sqrt ( 1 - ( a -= 2 ) * a ) + 1 ) } } , Elastic : { In : function ( a ) { var b , c = . 1 , d = . 4 ; return 0 === a ? 0 : 1 === a ? 1 : ( ! c || 1 > c ? ( c = 1 , b = d / 4 ) : b = d * Math . asin ( 1 / c ) / ( 2 * Math . PI ) , - ( c * Math . pow ( 2 , 10 * ( a -= 1 ) ) * Math . sin ( 2 * ( a - b ) * Math . PI / d ) ) ) } , Out : function ( a ) { var b , c = . 1 , d = . 4 ; return 0 === a ? 0 : 1 === a ? 1 : ( ! c || 1 > c ? ( c = 1 , b = d / 4 ) : b = d * Math . asin ( 1 / c ) / ( 2 * Math . PI ) , c * Math . pow ( 2 , - 10 * a ) * Math . sin ( 2 * ( a - b ) * Math . PI / d ) + 1 ) } , InOut : function ( a ) { var b , c = . 1 , d = . 4 ; return 0 === a ? 0 : 1 === a ? 1 : ( ! c || 1 > c ? ( c = 1 , b = d / 4 ) : b = d * Math . asin ( 1 / c ) / ( 2 * Math . PI ) , ( a *= 2 ) < 1 ? - . 5 * c * Math . pow ( 2 , 10 * ( a -= 1 ) ) * Math . sin ( 2 * ( a - b ) * Math . PI / d ) : c * Math . pow ( 2 , - 10 * ( a -= 1 ) ) * Math . sin ( 2 * ( a - b ) * Math . PI / d ) * . 5 + 1 ) } } , Back : { In : function ( a ) { var b = 1.70158 ; 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 - c . 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 * c . Easing . Bounce . In ( 2 * a ) : . 5 * c . Easing . Bounce . Out ( 2 * a - 1 ) + . 5 } } } , c . Easing . Default = c . Easing . Linear . None , c . Easing . Power0 = c . Easing . Linear . None , c . Easing . Power1 = c . Easing . Quadratic . Out , c . Easing . Power2 = c . Easing . Cubic . Out , c . Easing . Power3 = c . Easing . Quartic . Out , c . Easing . Power4 = c . Easing . Quintic . Out , c . Time = function ( a ) { this . game = a , this . time = 0 , this . prevTime = 0 , this . now = 0 , this . elapsed = 0 , this . elapsedMS = 0 , this . pausedTime = 0 , this . desiredFps = 60 , this . suggestedFps = null , this . slowMotion = 1 , this . advancedTiming = ! 1 , 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 . timeExpected = 0 , this . events = new c . Timer ( this . game , ! 1 ) , this . _frameCount = 0 , this . _elapsedAccumulator = 0 , this . _started = 0 , this . _timeLastSecond = 0 , this . _pauseStarted = 0 , this . _justResumed = ! 1 , this . _timers = [ ] , this . _len = 0 , this . _i = 0 } , c . Time . prototype = { boot : function ( ) { this . _started = Date . now ( ) , this . time = Date . now ( ) , this . events . start ( ) } , add : function ( a ) { return this . _timers . push ( a ) , a } , create : function ( a ) { "undefined" == typeof a && ( a = ! 0 ) ; var b = new c . Timer ( this . game , a ) ; return this . _timers . push ( b ) , b } , removeAll : function ( ) { for ( var a = 0 ; a < this . _timers . length ; a ++ ) this . _timers [ a ] . destroy ( ) ; this . _timers = [ ] , this . events . removeAll ( ) } , update : function ( a ) { if ( this . elapsedMS = this . time , this . time = Date . now ( ) , this . elapsedMS = this . time - this . elapsedMS , this . prevTime = this . now , this . now = a , this . elapsed = this . now - this . prevTime , this . timeToCall = Math . floor ( Math . max ( 0 , 1e3 / this . desiredFps - ( this . timeCallExpected - a ) ) ) , this . timeCallExpected = a + this . timeToCall , this . _frameCount ++ , this . _elapsedAccumulator += this . elapsed ,
} , 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 + '"' ) , null ) } , getBitmapData : function ( a ) { return this . _bitmapDatas [ a ] ? this . _bitmapDatas [ a ] . data : ( console . warn ( 'Phaser.Cache.getBitmapData: Invalid key: "' + a + '"' ) , null ) } , getBitmapFont : function ( a ) { return this . _bitmapFont [ a ] ? this . _bitmapFont [ a ] : ( console . warn ( 'Phaser.Cache.getBitmapFont: Invalid key: "' + a + '"' ) , null ) } , getPhysicsData : function ( a , b , c ) { if ( "undefined" == typeof b || null === b ) { if ( this . _physics [ a ] ) return this . _physics [ a ] . data ; console . warn ( 'Phaser.Cache.getPhysicsData: Invalid key: "' + a + '"' ) } else if ( this . _physics [ a ] && this . _physics [ a ] . data [ b ] ) { var d = this . _physics [ a ] . data [ b ] ; if ( ! d || ! c ) return d ; for ( var e in d ) if ( e = d [ e ] , e . fixtureKey === c ) return e ; console . warn ( 'Phaser.Cache.getPhysicsData: Could not find given fixtureKey: "' + c + " in " + a + '"' ) } else console . warn ( 'Phaser.Cache.getPhysicsData: Invalid key/object: "' + a + " / " + b + '"' ) ; return null } , checkKey : function ( a , b ) { return this . _cacheMap [ a ] [ b ] ? ! 0 : ! 1 } , checkCanvasKey : function ( a ) { return this . checkKey ( c . Cache . CANVAS , a ) } , checkImageKey : function ( a ) { return this . checkKey ( c . Cache . IMAGE , a ) } , checkTextureKey : function ( a ) { return this . checkKey ( c . Cache . TEXTURE , a ) } , checkSoundKey : function ( a ) { return this . checkKey ( c . Cache . SOUND , a ) } , checkTextKey : function ( a ) { return this . checkKey ( c . Cache . TEXT , a ) } , checkPhysicsKey : function ( a ) { return this . checkKey ( c . Cache . PHYSICS , a ) } , checkTilemapKey : function ( a ) { return this . checkKey ( c . Cache . TILEMAP , a ) } , checkBinaryKey : function ( a ) { return this . checkKey ( c . Cache . BINARY , a ) } , checkBitmapDataKey : function ( a ) { return this . checkKey ( c . Cache . BITMAPDATA , a ) } , checkBitmapFontKey : function ( a ) { return this . checkKey ( c . Cache . BITMAPFONT , a ) } , checkJSONKey : function ( a ) { return this . checkKey ( c . Cache . JSON , a ) } , checkXMLKey : function ( a ) { return this . checkKey ( c . Cache . XML , a ) } , checkURL : function ( a ) { return this . _urlMap [ this . _resolveURL ( a ) ] ? ! 0 : ! 1 } , getImage : function ( a ) { return this . _images [ a ] ? this . _images [ a ] . data : ( console . warn ( 'Phaser.Cache.getImage: Invalid key: "' + a + '"' ) , null ) } , getTilemapData : function ( a ) { return this . _tilemaps [ a ] ? this . _tilemaps [ a ] : ( console . warn ( 'Phaser.Cache.getTilemapData: Invalid key: "' + a + '"' ) , null ) } , getFrameData : function ( a , b ) { return "undefined" == typeof b && ( b = c . Cache . IMAGE ) , this . _cacheMap [ b ] [ a ] ? this . _cacheMap [ b ] [ a ] . frameData : null } , updateFrameData : function ( a , b ) { this . _images [ a ] && ( this . _images [ a ] . frameData = b ) } , getFrameByIndex : function ( a , b ) { return this . _images [ a ] ? this . _images [ a ] . frameData . getFrame ( b ) : null } , getFrameByName : function ( a , b ) { return this . _images [ a ] ? this . _images [ a ] . frameData . getFrameByName ( b ) : null } , getFrame : function ( a ) { return this . _images [ a ] ? this . _images [ a ] . frame : null } , getTextureFrame : function ( a ) { return this . _textures [ a ] ? this . _textures [ a ] . frame : null } , getRenderTexture : function ( a ) { return this . _textures [ a ] ? this . _textures [ a ] : ( console . warn ( 'Phaser.Cache.getTexture: Invalid key: "' + a + '"' ) , null ) } , getTexture : function ( a ) { return this . _textures [ a ] ? this . _textures [ a ] : void console . warn ( 'Phaser.Cache.getTexture: Invalid key: "' + a + '"' ) } , getSound : function ( a ) { return this . _sounds [ a ] ? this . _sounds [ a ] : ( console . warn ( 'Phaser.Cache.getSound: Invalid key: "' + a + '"' ) , null ) } , getSoundData : function ( a ) { return this . _sounds [ a ] ? this . _sounds [ a ] . data : ( console . warn ( 'Phaser.Cache.getSoundData: Invalid key: "' + a + '"' ) , null ) } , isSoundDecoded : function ( a ) { return this . _sounds [ a ] ? this . _sounds [ a ] . decoded : void 0 } , isSoundReady : function ( a ) { return this . _sounds [ a ] && this . _sounds [ a ] . decoded && this . game . sound . touchLocked === ! 1 } , getFrameCount : function ( a ) { return this . _images [ a ] ? this . _images [ a ] . frameData . total : 0 } , getText : func
} , restart : function ( a , b , c , d ) { a = a || "" , b = b || 0 , c = c || 1 , "undefined" == typeof d && ( d = ! 1 ) , this . play ( a , b , c , d , ! 0 ) } , pause : function ( ) { this . isPlaying && this . _sound && ( this . paused = ! 0 , this . pausedPosition = this . currentTime , this . pausedTime = this . game . time . time , this . onPause . dispatch ( this ) , this . stop ( ) ) } , resume : function ( ) { if ( this . paused && this . _sound ) { if ( this . usingWebAudio ) { var a = this . position + this . pausedPosition / 1e3 ; this . _sound = this . context . createBufferSource ( ) , this . _sound . buffer = this . _buffer , this . _sound . connect ( this . externalNode ? this . externalNode : this . gainNode ) , this . loop && ( this . _sound . loop = ! 0 ) , "undefined" == typeof this . _sound . start ? this . _sound . noteGrainOn ( 0 , a , this . duration ) : this . _sound . start ( 0 , a , this . duration ) } else this . _sound . play ( ) ; this . isPlaying = ! 0 , this . paused = ! 1 , this . startTime += this . game . time . time - this . pausedTime , this . onResume . dispatch ( this ) } } , stop : function ( ) { if ( this . isPlaying && this . _sound ) if ( this . usingWebAudio ) if ( "undefined" == typeof this . _sound . stop ) this . _sound . noteOff ( 0 ) ; else try { this . _sound . stop ( 0 ) } catch ( a ) { } else this . usingAudioTag && ( this . _sound . pause ( ) , this . _sound . currentTime = 0 ) ; this . isPlaying = ! 1 ; var b = this . currentMarker ; "" !== this . currentMarker && this . onMarkerComplete . dispatch ( this . currentMarker , this ) , this . currentMarker = "" , this . paused || this . onStop . dispatch ( this , b ) } , fadeIn : function ( a , b ) { "undefined" == typeof b && ( b = ! 1 ) , this . paused || ( this . play ( "" , 0 , 0 , b ) , this . fadeTo ( a , 1 ) ) } , fadeOut : function ( a ) { this . fadeTo ( a , 0 ) } , fadeTo : function ( a , b ) { if ( this . isPlaying && ! this . paused && b !== this . volume ) { if ( "undefined" == typeof a && ( a = 1e3 ) , "undefined" == typeof b ) return void console . warn ( "Phaser.Sound.fadeTo: No Volume Specified." ) ; var d = this . game . add . tween ( this ) . to ( { volume : b } , a , c . Easing . Linear . None , ! 0 ) ; d . onComplete . add ( this . fadeComplete , this ) } } , fadeComplete : function ( ) { this . onFadeComplete . dispatch ( this , this . volume ) , 0 === this . volume && this . stop ( ) } , destroy : function ( a ) { "undefined" == typeof a && ( a = ! 0 ) , this . stop ( ) , a ? this . game . sound . remove ( this ) : ( this . markers = { } , this . context = null , this . _buffer = null , this . externalNode = null , this . onDecoded . dispose ( ) , this . onPlay . dispose ( ) , this . onPause . dispose ( ) , this . onResume . dispose ( ) , this . onLoop . dispose ( ) , this . onStop . dispose ( ) , this . onMute . dispose ( ) , this . onMarkerComplete . dispose ( ) ) } } , c . Sound . prototype . constructor = c . Sound , Object . defineProperty ( c . Sound . prototype , "isDecoding" , { get : function ( ) { return this . game . cache . getSound ( this . key ) . isDecoding } } ) , Object . defineProperty ( c . Sound . prototype , "isDecoded" , { get : function ( ) { return this . game . cache . isSoundDecoded ( this . key ) } } ) , Object . defineProperty ( c . Sound . prototype , "mute" , { get : function ( ) { return this . _muted || this . game . sound . mute } , set : function ( a ) { a = a || null , a ? ( this . _muted = ! 0 , this . usingWebAudio ? ( this . _muteVolume = this . gainNode . gain . value , this . gainNode . gain . value = 0 ) : this . usingAudioTag && this . _sound && ( this . _muteVolume = this . _sound . volume , this . _sound . volume = 0 ) ) : ( this . _muted = ! 1 , this . usingWebAudio ? this . gainNode . gain . value = this . _muteVolume : this . usingAudioTag && this . _sound && ( this . _sound . volume = this . _muteVolume ) ) , this . onMute . dispatch ( this ) } } ) , Object . defineProperty ( c . Sound . prototype , "volume" , { get : function ( ) { return this . _volume } , set : function ( a ) { this . usingWebAudio ? ( this . _volume = a , this . gainNode . gain . value = a ) : this . usingAudioTag && this . _sound && a >= 0 && 1 >= a && ( this . _volume = a , this . _sound . volume = a ) } } ) , c . SoundManager = function ( a ) { this . game = a , this . onSoundDecode = new c . Signal , this . _codeMuted = ! 1 , this . _muted = ! 1 , this . _unlockSource = null , this . _volume = 1 , this . _sounds = [ ] , this . context = null , this . usingWebAudio = ! 0 , this . usingAudioTag = ! 1 , this . noAudio = ! 1 , this . connectToMaster = ! 0 , this . touchLocked = ! 1 , this . channels = 32 } , c . SoundManager . prototype = { boot : function ( ) { if ( this . game . device . iOS && this . game . device . webAudio === ! 1 && ( this . channels = 1 ) , ! this . game . device . cocoonJS && this . game . device . iOS || window . PhaserGlobal && window . PhaserGlobal . fakeiOSTouchLock ? ( this . game . input . touch . callbackContext = this , this . game . input . touch . touchStartCallback = this . unlock , this . game . input . mouse . callbackContext = this , this . game . input . mouse . mouseDownCallback = this . unlock , this . touchLocked = ! 0 ) : this . touchLocked = ! 1 , window . PhaserGlobal ) { if ( window . PhaserGlobal . disableAudio === ! 0 ) return this . usingWebAudio = ! 1 , void ( this . noAud
else if ( Array . isArray ( a ) && ! Array . isArray ( b ) ) for ( var f = 0 , g = a . length ; g > f ; f ++ ) this . collideHandler ( a [ f ] , b , c , d , e , ! 0 ) ; else if ( Array . isArray ( a ) && Array . isArray ( b ) ) for ( var f = 0 , g = a . length ; g > f ; f ++ ) for ( var h = 0 , i = b . length ; i > h ; h ++ ) this . collideHandler ( a [ f ] , b [ h ] , c , d , e , ! 0 ) ; else this . collideHandler ( a , b , c , d , e , ! 0 ) ; return this . _total > 0 } , collide : function ( a , b , c , d , e ) { if ( c = c || null , d = d || null , e = e || c , this . _result = ! 1 , this . _total = 0 , ! Array . isArray ( a ) && Array . isArray ( b ) ) for ( var f = 0 , g = b . length ; g > f ; f ++ ) this . collideHandler ( a , b [ f ] , c , d , e , ! 1 ) ; else if ( Array . isArray ( a ) && ! Array . isArray ( b ) ) for ( var f = 0 , g = a . length ; g > f ; f ++ ) this . collideHandler ( a [ f ] , b , c , d , e , ! 1 ) ; else if ( Array . isArray ( a ) && Array . isArray ( b ) ) for ( var f = 0 , h = a . length ; h > f ; f ++ ) for ( var i = 0 , j = b . length ; j > i ; i ++ ) this . collideHandler ( a [ f ] , b [ i ] , c , d , e , ! 1 ) ; else this . collideHandler ( a , b , c , d , e , ! 1 ) ; return this . _total > 0 } , collideHandler : function ( a , b , d , e , f , g ) { return "undefined" != typeof b || a . type !== c . GROUP && a . type !== c . EMITTER ? void ( a && b && a . exists && b . exists && ( a . type == c . SPRITE || a . type == c . TILESPRITE ? b . type == c . SPRITE || b . type == c . TILESPRITE ? this . collideSpriteVsSprite ( a , b , d , e , f , g ) : b . type == c . GROUP || b . type == c . EMITTER ? this . collideSpriteVsGroup ( a , b , d , e , f , g ) : b . type == c . TILEMAPLAYER && this . collideSpriteVsTilemapLayer ( a , b , d , e , f ) : a . type == c . GROUP ? b . type == c . SPRITE || b . type == c . TILESPRITE ? this . collideSpriteVsGroup ( b , a , d , e , f , g ) : b . type == c . GROUP || b . type == c . EMITTER ? this . collideGroupVsGroup ( a , b , d , e , f , g ) : b . type == c . TILEMAPLAYER && this . collideGroupVsTilemapLayer ( a , b , d , e , f ) : a . type == c . TILEMAPLAYER ? b . type == c . SPRITE || b . type == c . TILESPRITE ? this . collideSpriteVsTilemapLayer ( b , a , d , e , f ) : ( b . type == c . GROUP || b . type == c . EMITTER ) && this . collideGroupVsTilemapLayer ( b , a , d , e , f ) : a . type == c . EMITTER && ( b . type == c . SPRITE || b . type == c . TILESPRITE ? this . collideSpriteVsGroup ( b , a , d , e , f , g ) : b . type == c . GROUP || b . type == c . EMITTER ? this . collideGroupVsGroup ( a , b , d , e , f , g ) : b . type == c . TILEMAPLAYER && this . collideGroupVsTilemapLayer ( a , b , d , e , f ) ) ) ) : void this . collideGroupVsSelf ( a , d , e , f , g ) } , collideSpriteVsSprite : function ( a , b , c , d , e , f ) { return a . body && b . body ? ( this . separate ( a . body , b . body , d , e , f ) && ( c && c . call ( e , a , b ) , this . _total ++ ) , ! 0 ) : ! 1 } , collideSpriteVsGroup : function ( a , b , c , d , e , f ) { if ( 0 !== b . length && a . body ) if ( a . body . skipQuadTree || this . skipQuadTree ) for ( var g = 0 , h = b . children . length ; h > g ; g ++ ) b . children [ g ] && b . children [ g ] . exists && this . collideSpriteVsSprite ( a , b . children [ g ] , c , d , e , f ) ; else { this . quadTree . clear ( ) , this . quadTree . reset ( this . game . world . bounds . x , this . game . world . bounds . y , this . game . world . bounds . width , this . game . world . bounds . height , this . maxObjects , this . maxLevels ) , this . quadTree . populate ( b ) , this . _potentials = this . quadTree . retrieve ( a ) ; for ( var g = 0 , h = this . _potentials . length ; h > g ; g ++ ) this . separate ( a . body , this . _potentials [ g ] , d , e , f ) && ( c && c . call ( e , a , this . _potentials [ g ] . sprite ) , this . _total ++ ) } } , collideGroupVsSelf : function ( a , b , c , d , e ) { if ( 0 !== a . length ) for ( var f = a . children . length , g = 0 ; f - 1 > g ; g ++ ) for ( var h = g + 1 ; f > h ; h ++ ) a . children [ g ] && a . children [ h ] && a . children [ g ] . exists && a . children [ h ] . exists && this . collideSpriteVsSprite ( a . children [ g ] , a . children [ h ] , b , c , d , e ) } , collideGroupVsGroup : function ( a , b , d , e , f , g ) { if ( 0 !== a . length && 0 !== b . length ) for ( var h = 0 , i = a . children . length ; i > h ; h ++ ) a . children [ h ] . exists && ( a . children [ h ] . type === c . GROUP ? this . collideGroupVsGroup ( a . children [ h ] , b , d , e , f , g ) : this . collideSpriteVsGroup ( a . children [ h ] , b , d , e , f , g ) ) } , collideSpriteVsTilemapLayer : function ( a , b , c , d , e ) { if ( a . body && ( this . _mapData = b . getTiles ( a . body . position . x - a . body . tilePadding . x , a . body . position . y - a . body . tilePadding . y , a . body . width + a . body . tilePadding . x , a . body . height + a . body . tilePadding . y , ! 1 , ! 1 ) , 0 !== this . _mapData . length ) ) for ( var f = 0 ; f < this . _mapData . length ; f ++ ) d ? d . call ( e , a , this . _mapData [ f ] ) && this . separateTile ( f , a . body , this . _mapData [ f ] ) && ( this . _total ++ , c && c . call ( e , a , this . _mapData [ f ] ) ) : this . separateTile ( f , a . body , this . _mapData [ f ] ) && ( this . _total ++ , c && c . call ( e , a , this . _mapData [ f ] ) ) } , collideGroupVsTilemapLayer : function ( a , b , c , d , e ) { if ( 0 !== a . length ) for ( var f = 0 , g = a . children . length ; g > f ; f ++ ) a . children [ f ] . exists && this . collideSpriteVsTilemapLayer ( a . children [ f ] , b , c , d , e ) } , separate : function ( a , b , c , d , e ) { return a . enable && b . enable && this . intersects ( a , b ) ? c && c . call ( d , a . sprite , b . sprite ) === ! 1 ? ! 1 : ( this . _result = this . forceX ||
} , c . Tilemap . CSV = 0 , c . Tilemap . TILED _JSON = 1 , c . Tilemap . NORTH = 0 , c . Tilemap . EAST = 1 , c . Tilemap . SOUTH = 2 , c . Tilemap . WEST = 3 , c . Tilemap . prototype = { create : function ( a , b , c , d , e , f ) { return "undefined" == typeof f && ( f = this . game . world ) , this . width = b , this . height = c , this . setTileSize ( d , e ) , this . layers . length = 0 , this . createBlankLayer ( a , b , c , d , e , f ) } , setTileSize : function ( a , b ) { this . tileWidth = a , this . tileHeight = b , this . widthInPixels = this . width * a , this . heightInPixels = this . height * b } , addTilesetImage : function ( a , b , d , e , f , g , h ) { if ( "undefined" == typeof d && ( d = this . tileWidth ) , "undefined" == typeof e && ( e = this . tileHeight ) , "undefined" == typeof f && ( f = 0 ) , "undefined" == typeof g && ( g = 0 ) , "undefined" == typeof h && ( h = 0 ) , 0 === d && ( d = 32 ) , 0 === e && ( e = 32 ) , "undefined" == typeof b ) { if ( "string" != typeof a ) return null ; if ( b = a , ! this . game . cache . checkImageKey ( b ) ) return console . warn ( 'Phaser.Tilemap.addTilesetImage: Invalid image key given: "' + b + '"' ) , null } if ( "string" == typeof a && ( a = this . getTilesetIndex ( a ) , null === a && this . format === c . Tilemap . TILED _JSON ) ) return console . warn ( 'Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "' + b + '"' ) , null ; if ( this . tilesets [ a ] ) return this . tilesets [ a ] . setImage ( this . game . cache . getImage ( b ) ) , this . tilesets [ a ] ; var i = new c . Tileset ( b , h , d , e , f , g , { } ) ; i . setImage ( this . game . cache . getImage ( b ) ) , this . tilesets . push ( i ) ; for ( var j = this . tilesets . length - 1 , k = f , l = f , m = 0 , n = 0 , o = 0 , p = h ; p < h + i . total && ( this . tiles [ p ] = [ k , l , j ] , k += d + g , m ++ , m !== i . total ) && ( n ++ , n !== i . columns || ( k = f , l += e + g , n = 0 , o ++ , o !== i . rows ) ) ; p ++ ) ; return i } , createFromObjects : function ( a , b , d , e , f , g , h , i , j ) { if ( "undefined" == typeof f && ( f = ! 0 ) , "undefined" == typeof g && ( g = ! 1 ) , "undefined" == typeof h && ( h = this . game . world ) , "undefined" == typeof i && ( i = c . Sprite ) , "undefined" == typeof j && ( j = ! 0 ) , ! this . objects [ a ] ) return void console . warn ( "Tilemap.createFromObjects: Invalid objectgroup name given: " + a ) ; for ( var k , l = 0 , m = this . objects [ a ] . length ; m > l ; l ++ ) if ( this . objects [ a ] [ l ] . gid === b ) { k = new i ( this . game , this . objects [ a ] [ l ] . x , this . objects [ a ] [ l ] . y , d , e ) , k . name = this . objects [ a ] [ l ] . name , k . visible = this . objects [ a ] [ l ] . visible , k . autoCull = g , k . exists = f , j && ( k . y -= k . height ) , h . add ( k ) ; for ( var n in this . objects [ a ] [ l ] . properties ) h . set ( k , n , this . objects [ a ] [ l ] . properties [ n ] , ! 1 , ! 1 , 0 , ! 0 ) } } , createFromTiles : function ( a , b , d , e , f , g ) { "number" == typeof a && ( a = [ a ] ) , "undefined" == typeof b || null === b ? b = [ ] : "number" == typeof b && ( b = [ b ] ) , e = this . getLayer ( e ) , "undefined" == typeof f && ( f = this . game . world ) , "undefined" == typeof g && ( g = { } ) , void 0 === g . customClass && ( g . customClass = c . Sprite ) , void 0 === g . adjustY && ( g . adjustY = ! 0 ) ; var h = this . layers [ e ] . width , i = this . layers [ e ] . height ; if ( this . copy ( 0 , 0 , h , i , e ) , this . _results . length < 2 ) return 0 ; for ( var j , k = 0 , l = 1 , m = this . _results . length ; m > l ; l ++ ) if ( - 1 !== a . indexOf ( this . _results [ l ] . index ) ) { j = new g . customClass ( this . game , this . _results [ l ] . worldX , this . _results [ l ] . worldY , d ) ; for ( var n in g ) j [ n ] = g [ n ] ; f . add ( j ) , k ++ } if ( 1 === b . length ) for ( l = 0 ; l < a . length ; l ++ ) this . replace ( a [ l ] , b [ 0 ] , 0 , 0 , h , i , e ) ; else if ( b . length > 1 ) for ( l = 0 ; l < a . length ; l ++ ) this . replace ( a [ l ] , b [ l ] , 0 , 0 , h , i , e ) ; return k } , createLayer : function ( a , b , d , e ) { "undefined" == typeof b && ( b = this . game . width ) , "undefined" == typeof d && ( d = this . game . height ) , "undefined" == typeof e && ( e = this . game . world ) ; var f = a ; return "string" == typeof a && ( f = this . getLayerIndex ( a ) ) , null === f || f > this . layers . length ? void console . warn ( "Tilemap.createLayer: Invalid layer ID given: " + f ) : e . add ( new c . TilemapLayer ( this . game , this , f , b , d ) ) } , createBlankLayer : function ( a , b , d , e , f , g ) { if ( "undefined" == typeof g && ( g = this . game . world ) , null !== this . getLayerIndex ( a ) ) return void console . warn ( "Tilemap.createBlankLayer: Layer with matching name already exists" ) ; for ( var h , i = { name : a , x : 0 , y : 0 , width : b , height : d , widthInPixels : b * e , heightInPixels : d * f , alpha : 1 , visible : ! 0 , properties : { } , indexes : [ ] , callbacks : [ ] , bodies : [ ] , data : null } , j = [ ] , k = 0 ; d > k ; k ++ ) { h = [ ] ; for ( var l = 0 ; b > l ; l ++ ) h . push ( new c . Tile ( i , - 1 , l , k , e , f ) ) ; j . push ( h ) } i . data = j , this . layers . push ( i ) , this . currentLayer = this . layers . length - 1 ; var m = i . widthInPixels , n = i . heightInPixels ; m > this . game . width && ( m = this . game . width ) , n > this . game . height && ( n = this . game . height ) ; var j = new c . TilemapLayer ( this . game , this , this . layers . length - 1 , m , n ) ; return j . name = a , g . add ( j ) } , getIndex : function ( a , b ) { for ( var c = 0 ; c < a . le