2014-08-28 03:53:05 +00:00
/* Phaser (no libs) v2.1.0 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */
2014-09-09 13:47:54 +00:00
( function ( ) { var a = this , b = b || { VERSION : "2.1.0" , 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 , b . 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 } , transposeArray : function ( a ) { for ( var b = new Array ( a [ 0 ] . length ) , c = 0 ; c < a [ 0 ] . length ; c ++ ) { b [ c ] = new Array ( a . length - 1 ) ; for ( var d = a . length - 1 ; d > - 1 ; d -- ) b [ c ] [ d ] = a [ d ] [ c ] } return b } , rotateArray : function ( a , c ) { if ( "string" != typeof c && ( c = ( c % 360 + 360 ) % 360 ) , 90 === c || - 270 === c || "rotateLeft" === c ) a = b . Utils . transposeArray ( a ) , a = a . reverse ( ) ; else if ( - 90 === c || 270 === c || "rotateRight" === c ) a = a . reverse ( ) , a = b . Utils . transposeArray ( a ) ; else if ( 180 === Math . abs ( c ) || "rotate180" === c ) { for ( var d = 0 ; d < a . length ; d ++ ) a [ d ] . reverse ( ) ; a = a . reverse ( ) } return 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 } , shuffle : function ( a ) { for ( var b = a . length - 1 ; b > 0 ; b -- ) { var c = Math . floor ( Math . random ( ) * ( b + 1 ) ) , d = a [ b ] ; a [ b ] = a [ c ] , a [ c ] = d } return a } , 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 , c , 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 ( c in a ) d = h [ c ] , e = a [ c ] , h !== e && ( k && e && ( b . Utils . isPlainObject ( e ) || ( f = Array . isArray ( e ) ) ) ? ( f ? ( f = ! 1 , g = d && Array . isArray ( d ) ? d : [ ] ) : g = d && b . Utils . isPlainObject ( d ) ? d : { } , h [ c ] = b . Utils . extend ( k , g , e ) ) : void 0 !== e && ( h [ c ] = e ) ) ; return h } , mixin : function ( a , c ) { if ( ! a || "object" != typeof a ) return c ; for ( var d in a ) { var e = a [ d ] ; if ( ! e . childNodes && ! e . cloneNode ) { var f = typeof a [ d ] ; c [ d ] = a [ d ] && "object" === f ? typeof c [ d ] === f ? b . Utils . mixin ( a [ d ] , c [ d ] ) : b . Utils . mixin ( a [ d ] , new e . constructor ) : a [ d ] } } return c } } , "function" != typeof 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 ) { var c = 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 ] } } , win
} , setCurrentState : function ( a ) { this . callbackContext = this . states [ a ] , this . link ( a ) , this . onInitCallback = this . states [ a ] . init || this . dummy , this . onPreloadCallback = this . states [ a ] . preload || null , this . onLoadRenderCallback = this . states [ a ] . loadRender || null , this . onLoadUpdateCallback = this . states [ a ] . loadUpdate || null , this . onCreateCallback = this . states [ a ] . create || null , this . onUpdateCallback = this . states [ a ] . update || null , this . onPreRenderCallback = this . states [ a ] . preRender || null , this . onRenderCallback = this . states [ a ] . render || null , this . onResizeCallback = this . states [ a ] . resize || null , this . onPausedCallback = this . states [ a ] . paused || null , this . onResumedCallback = this . states [ a ] . resumed || null , this . onPauseUpdateCallback = this . states [ a ] . pauseUpdate || null , this . onShutDownCallback = this . states [ a ] . shutdown || this . dummy , this . current = a , this . _created = ! 1 , this . onInitCallback . apply ( this . callbackContext , this . _args ) , this . _args = [ ] } , getCurrentState : function ( ) { return this . states [ this . current ] } , loadComplete : function ( ) { this . _created === ! 1 && this . onCreateCallback ? ( this . _created = ! 0 , this . onCreateCallback . call ( this . callbackContext , this . game ) ) : this . _created = ! 0 } , pause : function ( ) { this . _created && this . onPausedCallback && this . onPausedCallback . call ( this . callbackContext , this . game ) } , resume : function ( ) { this . _created && this . onResumedCallback && this . onResumedCallback . call ( this . callbackContext , this . game ) } , update : function ( ) { this . _created && this . onUpdateCallback ? this . onUpdateCallback . call ( this . callbackContext , this . game ) : this . onLoadUpdateCallback && this . onLoadUpdateCallback . call ( this . callbackContext , this . game ) } , pauseUpdate : function ( ) { this . _created && this . onPauseUpdateCallback ? this . onPauseUpdateCallback . call ( this . callbackContext , this . game ) : this . onLoadUpdateCallback && this . onLoadUpdateCallback . call ( this . callbackContext , this . game ) } , preRender : function ( ) { this . onPreRenderCallback && this . onPreRenderCallback . call ( this . callbackContext , this . game ) } , resize : function ( a , b ) { this . onResizeCallback && this . onResizeCallback . call ( this . callbackContext , a , b ) } , render : function ( ) { this . _created && this . onRenderCallback ? ( this . game . renderType === b . CANVAS && ( this . game . context . save ( ) , this . game . context . setTransform ( 1 , 0 , 0 , 1 , 0 , 0 ) ) , this . onRenderCallback . call ( this . callbackContext , this . game ) , this . game . renderType === b . CANVAS && this . game . context . restore ( ) ) : this . onLoadRenderCallback && this . onLoadRenderCallback . call ( this . callbackContext , this . game ) } , destroy : function ( ) { this . clearCurrentState ( ) , this . callbackContext = null , this . onInitCallback = null , this . onShutDownCallback = null , this . onPreloadCallback = null , this . onLoadRenderCallback = null , this . onLoadUpdateCallback = null , this . onCreateCallback = null , this . onUpdateCallback = null , this . onRenderCallback = null , this . onPausedCallback = null , this . onResumedCallback = null , this . onPauseUpdateCallback = null , this . game = null , this . states = { } , this . _pendingState = null } } , b . StateManager . prototype . constructor = b . StateManager , b . LinkedList = function ( ) { this . next = null , this . prev = null , this . first = null , this . last = null , this . total = 0 } , b . LinkedList . prototype = { add : function ( a ) { return 0 === this . total && null === this . first && null === this . last ? ( this . first = a , this . last = a , this . next = a , a . prev = this , this . total ++ , a ) : ( this . last . next = a , a . prev = this . last , this . last = a , this . total ++ , a ) } , reset : function ( ) { this . first = null , this . last = null , this . next = null , this . prev = null , this . total = 0 } , remove : function ( a ) { return 1 === this . total ? ( this . reset ( ) , void ( a . next = a . prev = null ) ) : ( a === this . first ? this . first = this . first . next : a === this . last && ( this . last = this . last . prev ) , a . prev && ( a . prev . next = a . next ) , a . next && ( a . next . prev = a . prev ) , a . next = a . prev = null , null === this . first && ( this . last = null ) , void this . total -- ) } , callAll : function ( a ) { if ( this . first && this . last ) { var b = this . first ; do b && b [ a ] && b [ a ] . call ( b ) , b = b . next ; while ( b != this . last . next ) } } } , b . LinkedList . prototype . constructor = b . LinkedList , b . ArrayList = function ( ) { this . total = 0 , this . position = 0 , this . list = [ ] } , b . ArrayList . prototype = { add : function ( a ) { return this . exists ( a ) || ( this . list . push ( a ) , this . total ++ ) , a } , getIndex : function ( a ) { return this . list . indexOf ( a ) } , exists : function ( a ) { return this . list . indexOf ( a ) > - 1 } , reset : function ( ) { this . list . length = 0 , this . total = 0 } , remove : function ( a ) { var b = this . list . indexOf ( a ) ; return b
} , refresh : function ( ) { this . multiplier = Math . min ( this . manager . height / this . height , this . manager . width / this . width ) , this . boundsFluid . width = Math . round ( this . width * this . multiplier ) , this . boundsFluid . height = Math . round ( this . height * this . multiplier ) , this . scaleFluid . set ( this . boundsFluid . width / this . width , this . boundsFluid . height / this . height ) , this . scaleFluidInversed . set ( this . width / this . boundsFluid . width , this . height / this . boundsFluid . height ) , this . scaleFull . set ( this . boundsFull . width / this . width , this . boundsFull . height / this . height ) , this . boundsFull . width = this . manager . width * this . scaleFluidInversed . x , this . boundsFull . height = this . manager . height * this . scaleFluidInversed . y , this . boundsFluid . centerOn ( this . manager . bounds . centerX , this . manager . bounds . centerY ) , this . boundsNone . centerOn ( this . manager . bounds . centerX , this . manager . bounds . centerY ) , this . positionFluid . set ( this . boundsFluid . x , this . boundsFluid . y ) , this . positionNone . set ( this . boundsNone . x , this . boundsNone . y ) } , debug : function ( ) { this . game . debug . text ( this . boundsFull . width + " x " + this . boundsFull . height , this . boundsFull . x + 4 , this . boundsFull . y + 16 ) , this . game . debug . geom ( this . boundsFull , "rgba(0,0,255,0.9" , ! 1 ) , this . game . debug . text ( this . boundsFluid . width + " x " + this . boundsFluid . height , this . boundsFluid . x + 4 , this . boundsFluid . y + 16 ) , this . game . debug . geom ( this . boundsFluid , "rgba(255,0,0,0.9" , ! 1 ) , this . game . debug . text ( this . boundsNone . width + " x " + this . boundsNone . height , this . boundsNone . x + 4 , this . boundsNone . y + 16 ) , this . game . debug . geom ( this . boundsNone , "rgba(0,255,0,0.9" , ! 1 ) } } , b . FlexGrid . prototype . constructor = b . FlexGrid , b . FlexLayer = function ( a , c , d , e ) { b . Group . call ( this , a . game , null , "__flexLayer" + a . game . rnd . uuid ( ) , ! 1 ) , this . manager = a , this . grid = a . grid , this . position = c , this . bounds = d , this . scale = e , this . topLeft = d . topLeft , this . topMiddle = new b . Point ( d . halfWidth , 0 ) , this . topRight = d . topRight , this . bottomLeft = d . bottomLeft , this . bottomMiddle = new b . Point ( d . halfWidth , d . bottom ) , this . bottomRight = d . bottomRight } , b . FlexLayer . prototype = Object . create ( b . Group . prototype ) , b . FlexLayer . prototype . constructor = b . FlexLayer , b . FlexLayer . prototype . resize = function ( ) { } , b . FlexLayer . prototype . debug = function ( ) { this . game . debug . text ( this . bounds . width + " x " + this . bounds . height , this . bounds . x + 4 , this . bounds . y + 16 ) , this . game . debug . geom ( this . bounds , "rgba(0,0,255,0.9" , ! 1 ) , this . game . debug . geom ( this . topLeft , "rgba(255,255,255,0.9" ) , this . game . debug . geom ( this . topMiddle , "rgba(255,255,255,0.9" ) , this . game . debug . geom ( this . topRight , "rgba(255,255,255,0.9" ) } , b . ScaleManager = function ( a , c , d ) { this . game = a , this . grid = null , this . width = 0 , this . height = 0 , this . minWidth = null , this . maxWidth = null , this . minHeight = null , this . maxHeight = null , this . offset = new b . Point , this . forceLandscape = ! 1 , this . forcePortrait = ! 1 , this . incorrectOrientation = ! 1 , this . pageAlignHorizontally = ! 1 , this . pageAlignVertically = ! 1 , this . maxIterations = 5 , this . enterLandscape = new b . Signal , this . enterPortrait = new b . Signal , this . enterIncorrectOrientation = new b . Signal , this . leaveIncorrectOrientation = new b . Signal , this . fullScreenTarget = null , this . enterFullScreen = new b . Signal , this . leaveFullScreen = new b . Signal , this . orientation = 0 , window . orientation ? this . orientation = window . orientation : window . outerWidth > window . outerHeight && ( this . orientation = 90 ) , this . scaleFactor = new b . Point ( 1 , 1 ) , this . scaleFactorInversed = new b . Point ( 1 , 1 ) , this . margin = new b . Point ( 0 , 0 ) , this . bounds = new b . Rectangle , this . aspectRatio = 0 , this . sourceAspectRatio = 0 , this . event = null , this . fullScreenScaleMode = b . ScaleManager . NO _SCALE , this . parentIsWindow = ! 1 , this . parentNode = null , this . parentScaleFactor = new b . Point ( 1 , 1 ) , this . trackParentInterval = 2e3 , this . onResize = null , this . onResizeContext = null , this . _scaleMode = b . ScaleManager . NO _SCALE , this . _width = 0 , this . _height = 0 , this . _check = null , this . _nextParentCheck = 0 , this . _parentBounds = null , a . config && this . parseConfig ( a . config ) , this . setupScale ( c , d ) } , b . ScaleManager . EXACT _FIT = 0 , b . ScaleManager . NO _SCALE = 1 , b . ScaleManager . SHOW _ALL = 2 , b . ScaleManager . RESIZE = 3 , b . ScaleManager . prototype = { parseConfig : function ( a ) { a . scaleMode && ( this . scaleMode = a . scaleMode ) , a . fullScreenScaleMode && ( this . fullScreenScaleMode = a . fullScreenScaleMode ) , a . fullScreenTarget && ( this . fullScreenTarget = a . fullScreenTarget ) } , setupScale : function ( a , c ) { var d , e = ne
} , addKey : function ( a ) { return this . _keys [ a ] || ( this . _keys [ a ] = new b . Key ( this . game , a ) , this . addKeyCapture ( a ) ) , this . _keys [ a ] } , removeKey : function ( a ) { this . _keys [ a ] && ( this . _keys [ a ] = null , this . removeKeyCapture ( a ) ) } , createCursorKeys : function ( ) { return { up : this . addKey ( b . Keyboard . UP ) , down : this . addKey ( b . Keyboard . DOWN ) , left : this . addKey ( b . Keyboard . LEFT ) , right : this . addKey ( b . Keyboard . RIGHT ) } } , start : function ( ) { if ( ! this . game . device . cocoonJS && null === this . _onKeyDown ) { var a = this ; this . _onKeyDown = function ( b ) { return a . processKeyDown ( b ) } , this . _onKeyUp = function ( b ) { return a . processKeyUp ( b ) } , this . _onKeyPress = function ( b ) { return a . processKeyPress ( b ) } , window . addEventListener ( "keydown" , this . _onKeyDown , ! 1 ) , window . addEventListener ( "keyup" , this . _onKeyUp , ! 1 ) , window . addEventListener ( "keypress" , this . _onKeyPress , ! 1 ) } } , stop : function ( ) { window . removeEventListener ( "keydown" , this . _onKeyDown ) , window . removeEventListener ( "keyup" , this . _onKeyUp ) , window . removeEventListener ( "keypress" , this . _onKeyPress ) , this . _onKeyDown = null , this . _onKeyUp = null , this . _onKeyPress = null } , destroy : function ( ) { this . stop ( ) , this . clearCaptures ( ) , this . _keys . length = 0 , this . _i = 0 } , addKeyCapture : function ( a ) { if ( "object" == typeof a ) for ( var b in a ) this . _capture [ a [ b ] ] = ! 0 ; else this . _capture [ a ] = ! 0 } , removeKeyCapture : function ( a ) { delete this . _capture [ a ] } , clearCaptures : function ( ) { this . _capture = { } } , update : function ( ) { for ( this . _i = this . _keys . length ; this . _i -- ; ) this . _keys [ this . _i ] && this . _keys [ this . _i ] . update ( ) } , processKeyDown : function ( a ) { this . event = a , this . game . input . disabled || this . disabled || ( this . _capture [ a . keyCode ] && a . preventDefault ( ) , this . _keys [ a . keyCode ] || ( this . _keys [ a . keyCode ] = new b . Key ( this . game , a . keyCode ) ) , this . _keys [ a . keyCode ] . processKeyDown ( a ) , this . _k = a . keyCode , this . onDownCallback && this . onDownCallback . call ( this . callbackContext , a ) ) } , processKeyPress : function ( a ) { this . pressEvent = a , this . game . input . disabled || this . disabled || this . onPressCallback && this . onPressCallback . call ( this . callbackContext , String . fromCharCode ( a . charCode ) , a ) } , processKeyUp : function ( a ) { this . event = a , this . game . input . disabled || this . disabled || ( this . _capture [ a . keyCode ] && a . preventDefault ( ) , this . _keys [ a . keyCode ] || ( this . _keys [ a . keyCode ] = new b . Key ( this . game , a . keyCode ) ) , this . _keys [ a . keyCode ] . processKeyUp ( a ) , this . onUpCallback && this . onUpCallback . call ( this . callbackContext , a ) ) } , reset : function ( a ) { "undefined" == typeof a && ( a = ! 0 ) , this . event = null ; for ( var b = this . _keys . length ; b -- ; ) this . _keys [ b ] && this . _keys [ b ] . reset ( a ) } , justPressed : function ( a , b ) { return "undefined" == typeof b && ( b = 50 ) , this . _keys [ a ] ? this . _keys [ a ] . justPressed ( b ) : ! 1 } , justReleased : function ( a , b ) { return "undefined" == typeof b && ( b = 50 ) , this . _keys [ a ] ? this . _keys [ a ] . justReleased ( b ) : ! 1 } , isDown : function ( a ) { return this . _keys [ a ] ? this . _keys [ a ] . isDown : ! 1 } } , Object . defineProperty ( b . Keyboard . prototype , "lastChar" , { get : function ( ) { return 32 === this . event . charCode ? "" : String . fromCharCode ( this . pressEvent . charCode ) } } ) , Object . defineProperty ( b . Keyboard . prototype , "lastKey" , { get : function ( ) { return this . _keys [ this . _k ] } } ) , b . Keyboard . prototype . constructor = b . Keyboard , b . Keyboard . A = "A" . charCodeAt ( 0 ) , b . Keyboard . B = "B" . charCodeAt ( 0 ) , b . Keyboard . C = "C" . charCodeAt ( 0 ) , b . Keyboard . D = "D" . charCodeAt ( 0 ) , b . Keyboard . E = "E" . charCodeAt ( 0 ) , b . Keyboard . F = "F" . charCodeAt ( 0 ) , b . Keyboard . G = "G" . charCodeAt ( 0 ) , b . Keyboard . H = "H" . charCodeAt ( 0 ) , b . Keyboard . I = "I" . charCodeAt ( 0 ) , b . Keyboard . J = "J" . charCodeAt ( 0 ) , b . Keyboard . K = "K" . charCodeAt ( 0 ) , b . Keyboard . L = "L" . charCodeAt ( 0 ) , b . Keyboard . M = "M" . charCodeAt ( 0 ) , b . Keyboard . N = "N" . charCodeAt ( 0 ) , b . Keyboard . O = "O" . charCodeAt ( 0 ) , b . Keyboard . P = "P" . charCodeAt ( 0 ) , b . Keyboard . Q = "Q" . charCodeAt ( 0 ) , b . Keyboard . R = "R" . charCodeAt ( 0 ) , b . Keyboard . S = "S" . charCodeAt ( 0 ) , b . Keyboard . T = "T" . charCodeAt ( 0 ) , b . Keyboard . U = "U" . charCodeAt ( 0 ) , b . Keyboard . V = "V" . charCodeAt ( 0 ) , b . Keyboard . W = "W" . charCodeAt ( 0 ) , b . Keyboard . X = "X" . charCodeAt ( 0 ) , b . Keyboard . Y = "Y" . charCodeAt ( 0 ) , b . Keyboard . Z = "Z" . charCodeAt ( 0 ) , b . Keyboard . ZERO = "0" . charCodeAt ( 0 ) , b . Keyboard . ONE = "1" . charCodeAt ( 0 ) , b . Keyboard . TWO = "2" . charCodeAt ( 0 ) , b . Keyboard . THREE = "3" . charCodeAt ( 0 ) , b . Keyboard . FOUR = "4" . charCodeAt ( 0 ) , b . Keyboard . FIVE = "5" . charCodeAt ( 0 ) , b . Keyboard . SIX = "6" . charCodeAt ( 0 ) , b . Keyboard . SEVEN = "7" . charCodeAt ( 0 ) , b . Keyboard . EIGHT = "8" . charCodeAt ( 0 ) , b .
} } , connect : function ( a ) { var c = ! this . connected ; this . connected = ! 0 , this . index = a . index , this . _rawPad = a , this . _buttons = [ ] , this . _buttonsLen = a . buttons . length , this . _axes = [ ] , this . _axesLen = a . axes . length ; for ( var d = 0 ; d < this . _axesLen ; d ++ ) this . _axes [ d ] = a . axes [ d ] ; for ( var e in a . buttons ) e = parseInt ( e , 10 ) , this . _buttons [ e ] = new b . GamepadButton ( this , e ) ; c && this . _padParent . onConnectCallback && this . _padParent . onConnectCallback . call ( this . _padParent . callbackContext , this . index ) , c && this . onConnectCallback && this . onConnectCallback . call ( this . callbackContext ) } , disconnect : function ( ) { var a = this . connected , b = this . index ; this . connected = ! 1 , this . index = null , this . _rawPad = void 0 ; for ( var c = 0 ; c < this . _buttonsLen ; c ++ ) this . _buttons [ c ] . destroy ( ) ; this . _buttons = [ ] , this . _buttonsLen = 0 , this . _axes = [ ] , this . _axesLen = 0 , a && this . _padParent . onDisconnectCallback && this . _padParent . onDisconnectCallback . call ( this . _padParent . callbackContext , b ) , a && this . onDisconnectCallback && this . onDisconnectCallback . call ( this . callbackContext ) } , destroy : function ( ) { this . _rawPad = void 0 ; for ( var a = 0 ; a < this . _buttonsLen ; a ++ ) this . _buttons [ a ] . destroy ( ) ; this . _buttons = [ ] , this . _buttonsLen = 0 , this . _axes = [ ] , this . _axesLen = 0 , this . onConnectCallback = null , this . onDisconnectCallback = null , this . onDownCallback = null , this . onUpCallback = null , this . onAxisCallback = null , this . onFloatCallback = null } , processAxisChange : function ( a , b ) { this . _axes [ a ] !== b && ( this . _axes [ a ] = b , this . _padParent . onAxisCallback && this . _padParent . onAxisCallback . call ( this . _padParent . callbackContext , this , a , b ) , this . onAxisCallback && this . onAxisCallback . call ( this . callbackContext , this , a , b ) ) } , processButtonDown : function ( a , b ) { this . _padParent . onDownCallback && this . _padParent . onDownCallback . call ( this . _padParent . callbackContext , a , b , this . index ) , this . onDownCallback && this . onDownCallback . call ( this . callbackContext , a , b ) , this . _buttons [ a ] && this . _buttons [ a ] . processButtonDown ( b ) } , processButtonUp : function ( a , b ) { this . _padParent . onUpCallback && this . _padParent . onUpCallback . call ( this . _padParent . callbackContext , a , b , this . index ) , this . onUpCallback && this . onUpCallback . call ( this . callbackContext , a , b ) , this . _buttons [ a ] && this . _buttons [ a ] . processButtonUp ( b ) } , processButtonFloat : function ( a , b ) { this . _padParent . onFloatCallback && this . _padParent . onFloatCallback . call ( this . _padParent . callbackContext , a , b , this . index ) , this . onFloatCallback && this . onFloatCallback . call ( this . callbackContext , a , b ) , this . _buttons [ a ] && this . _buttons [ a ] . processButtonFloat ( b ) } , axis : function ( a ) { return this . _axes [ a ] ? this . _axes [ a ] : ! 1 } , isDown : function ( a ) { return this . _buttons [ a ] ? this . _buttons [ a ] . isDown : ! 1 } , isUp : function ( a ) { return this . _buttons [ a ] ? this . _buttons [ a ] . isUp : ! 1 } , justReleased : function ( a , b ) { return this . _buttons [ a ] ? this . _buttons [ a ] . justReleased ( b ) : void 0 } , justPressed : function ( a , b ) { return this . _buttons [ a ] ? this . _buttons [ a ] . justPressed ( b ) : void 0 } , buttonValue : function ( a ) { return this . _buttons [ a ] ? this . _buttons [ a ] . value : null } , reset : function ( ) { for ( var a = 0 ; a < this . _axes . length ; a ++ ) this . _axes [ a ] = 0 } } , b . SinglePad . prototype . constructor = b . SinglePad , b . GamepadButton = function ( a , c ) { this . pad = a , this . game = a . game , this . isDown = ! 1 , this . isUp = ! 0 , this . timeDown = 0 , this . duration = 0 , this . timeUp = 0 , this . repeats = 0 , this . value = 0 , this . buttonCode = c , this . onDown = new b . Signal , this . onUp = new b . Signal , this . onFloat = new b . Signal } , b . GamepadButton . prototype = { processButtonDown : function ( a ) { this . isDown = ! 0 , this . isUp = ! 1 , this . timeDown = this . game . time . now , this . duration = 0 , this . repeats = 0 , this . value = a , this . onDown . dispatch ( this , a ) } , processButtonUp : function ( a ) { this . isDown = ! 1 , this . isUp = ! 0 , this . timeUp = this . game . time . now , this . value = a , this . onUp . dispatch ( this , a ) } , processButtonFloat : function ( a ) { this . value = a , this . onFloat . dispatch ( this , a ) } , justPressed : function ( a ) { return a = a || 250 , this . isDown === ! 0 && this . timeDown + a > this . game . time . now } , justReleased : function ( a ) { return a = a || 250 , this . isUp === ! 0 && this . timeUp + a > this . game . time . now } , reset : function ( ) { this . isDown = ! 1 , this . isUp = ! 0 , this . timeDown = this . game . time . now , this . duration = 0 , this . repeats = 0 } , destroy : function ( ) { this . onDown . dispose ( ) , this . onUp . dispose ( ) , this . onFloat . dispose ( ) , this . pad = null , this . game = null } } , b . GamepadButton . prototype . constructor = b . GamepadButton , b . InputHandler = function ( a ) { this . spr
} , copyRect : function ( a , b , c , d , e , f , g ) { return this . copy ( a , b . x , b . y , b . width , b . height , c , d , b . width , b . height , 0 , 0 , 0 , 1 , 1 , e , f , g ) } , draw : function ( a , b , c , d , e , f , g ) { return this . copy ( a , null , null , null , null , b , c , d , e , null , null , null , null , null , null , f , g ) } , alphaMask : function ( a , b ) { return this . draw ( b ) . blendSourceAtop ( ) . draw ( a ) . blendReset ( ) } , extract : function ( a , b , c , d , e , f , g , h , i ) { return "undefined" == typeof e && ( e = 255 ) , "undefined" == typeof f && ( f = ! 1 ) , "undefined" == typeof g && ( g = b ) , "undefined" == typeof h && ( h = c ) , "undefined" == typeof i && ( i = d ) , f && a . resize ( this . width , this . height ) , this . processPixelRGB ( function ( f , j , k ) { return f . r === b && f . g === c && f . b === d && a . setPixel32 ( j , k , g , h , i , e , ! 1 ) , ! 1 } , this ) , a . context . putImageData ( a . imageData , 0 , 0 ) , a . dirty = ! 0 , a } , rect : function ( a , b , c , d , e ) { return "undefined" != typeof e && ( this . context . fillStyle = e ) , this . context . fillRect ( a , b , c , d ) , this } , circle : function ( a , b , c , d ) { return "undefined" != typeof d && ( this . context . fillStyle = d ) , this . context . beginPath ( ) , this . context . arc ( a , b , c , 0 , 2 * Math . PI , ! 1 ) , this . context . closePath ( ) , this . context . fill ( ) , this } , render : function ( ) { return ! this . disableTextureUpload && this . game . renderType === b . WEBGL && this . dirty && ( PIXI . updateWebGLTexture ( this . baseTexture , this . game . renderer . gl ) , this . dirty = ! 1 ) , this } , blendReset : function ( ) { return this . context . globalCompositeOperation = "source-over" , this } , blendSourceOver : function ( ) { return this . context . globalCompositeOperation = "source-over" , this } , blendSourceIn : function ( ) { return this . context . globalCompositeOperation = "source-in" , this } , blendSourceOut : function ( ) { return this . context . globalCompositeOperation = "source-out" , this } , blendSourceAtop : function ( ) { return this . context . globalCompositeOperation = "source-atop" , this } , blendDestinationOver : function ( ) { return this . context . globalCompositeOperation = "destination-over" , this } , blendDestinationIn : function ( ) { return this . context . globalCompositeOperation = "destination-in" , this } , blendDestinationOut : function ( ) { return this . context . globalCompositeOperation = "destination-out" , this } , blendDestinationAtop : function ( ) { return this . context . globalCompositeOperation = "destination-atop" , this } , blendXor : function ( ) { return this . context . globalCompositeOperation = "xor" , this } , blendAdd : function ( ) { return this . context . globalCompositeOperation = "lighter" , this } , blendMultiply : function ( ) { return this . context . globalCompositeOperation = "multiply" , this } , blendScreen : function ( ) { return this . context . globalCompositeOperation = "screen" , this } , blendOverlay : function ( ) { return this . context . globalCompositeOperation = "overlay" , this } , blendDarken : function ( ) { return this . context . globalCompositeOperation = "darken" , this } , blendLighten : function ( ) { return this . context . globalCompositeOperation = "lighten" , this } , blendColorDodge : function ( ) { return this . context . globalCompositeOperation = "color-dodge" , this } , blendColorBurn : function ( ) { return this . context . globalCompositeOperation = "color-burn" , this } , blendHardLight : function ( ) { return this . context . globalCompositeOperation = "hard-light" , this } , blendSoftLight : function ( ) { return this . context . globalCompositeOperation = "soft-light" , this } , blendDifference : function ( ) { return this . context . globalCompositeOperation = "difference" , this } , blendExclusion : function ( ) { return this . context . globalCompositeOperation = "exclusion" , this } , blendHue : function ( ) { return this . context . globalCompositeOperation = "hue" , this } , blendSaturation : function ( ) { return this . context . globalCompositeOperation = "saturation" , this } , blendColor : function ( ) { return this . context . globalCompositeOperation = "color" , this } , blendLuminosity : function ( ) { return this . context . globalCompositeOperation = "luminosity" , this } } , Object . defineProperty ( b . BitmapData . prototype , "smoothed" , { get : function ( ) { b . Canvas . getSmoothingEnabled ( this . context ) } , set : function ( a ) { b . Canvas . setSmoothingEnabled ( this . context , a ) } } ) , b . BitmapData . getTransform = function ( a , b , c , d , e , f ) { return "number" != typeof a && ( a = 0 ) , "number" != typeof b && ( b = 0 ) , "number" != typeof c && ( c = 1 ) , "number" != typeof d && ( d = 1 ) , "number" != typeof e && ( e = 0 ) , "number" != typeof f && ( f = 0 ) , { sx : c , sy : d , scaleX : c , scaleY : d , skewX : e , skewY : f , translateX : a , translateY : b , tx : a , ty : b } } , b . BitmapData . prototype . constructor = b . BitmapData , b . Sprite = function ( a , c , d , e , f ) { c = c || 0 , d = d || 0 , e = e || null , f = f || n
} , b . Rope . prototype . destroy = function ( a ) { if ( null !== this . game && ! this . destroyPhase ) { "undefined" == typeof a && ( a = ! 0 ) , this . _cache [ 8 ] = 1 , this . events && this . events . onDestroy . dispatch ( this ) , this . filters && ( this . filters = null ) , this . parent && ( this . parent instanceof b . Group ? this . parent . remove ( this ) : this . parent . removeChild ( this ) ) , this . animations . destroy ( ) , this . events . destroy ( ) ; var c = this . children . length ; if ( a ) for ( ; c -- ; ) this . children [ c ] . destroy ( a ) ; else for ( ; c -- ; ) this . removeChild ( this . children [ c ] ) ; this . exists = ! 1 , this . visible = ! 1 , this . filters = null , this . mask = null , this . game = null , this . _cache [ 8 ] = 0 } } , b . Rope . prototype . play = function ( a , b , c , d ) { return this . animations . play ( a , b , c , d ) } , b . Rope . prototype . reset = function ( a , b ) { return 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 . tilePosition . x = 0 , this . tilePosition . y = 0 , this . body && this . body . reset ( a , b , ! 1 , ! 1 ) , this . _cache [ 4 ] = 1 , this } , Object . defineProperty ( b . Rope . prototype , "angle" , { get : function ( ) { return b . Math . wrapAngle ( b . Math . radToDeg ( this . rotation ) ) } , set : function ( a ) { this . rotation = b . Math . degToRad ( b . Math . wrapAngle ( a ) ) } } ) , Object . defineProperty ( b . Rope . prototype , "frame" , { get : function ( ) { return this . animations . frame } , set : function ( a ) { a !== this . animations . frame && ( this . animations . frame = a ) } } ) , Object . defineProperty ( b . Rope . prototype , "frameName" , { get : function ( ) { return this . animations . frameName } , set : function ( a ) { a !== this . animations . frameName && ( this . animations . frameName = a ) } } ) , Object . defineProperty ( b . Rope . 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 } } ) , Object . defineProperty ( b . Rope . prototype , "exists" , { get : function ( ) { return ! ! this . _cache [ 6 ] } , set : function ( a ) { a ? ( this . _cache [ 6 ] = 1 , this . body && this . body . type === b . Physics . P2JS && this . body . addToWorld ( ) , this . visible = ! 0 ) : ( this . _cache [ 6 ] = 0 , this . body && this . body . type === b . Physics . P2JS && ( this . body . safeRemove = ! 0 ) , this . visible = ! 1 ) } } ) , Object . defineProperty ( b . Rope . 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 . start ( ) : this . input && this . input . enabled && this . input . stop ( ) } } ) , Object . defineProperty ( b . Rope . prototype , "x" , { get : function ( ) { return this . position . x } , set : function ( a ) { this . position . x = a , this . body && this . body . type === b . Physics . ARCADE && 2 === this . body . phase && ( this . body . _reset = 1 ) } } ) , Object . defineProperty ( b . Rope . prototype , "y" , { get : function ( ) { return this . position . y } , set : function ( a ) { this . position . y = a , this . body && this . body . type === b . Physics . ARCADE && 2 === this . body . phase && ( this . body . _reset = 1 ) } } ) , Object . defineProperty ( b . Rope . prototype , "updateAnimation" , { get : function ( ) { return this . _updateAnimation } , set : function ( a ) { a && "function" == typeof a ? ( this . _hasUpdateAnimation = ! 0 , this . _updateAnimation = a ) : ( this . _hasUpdateAnimation = ! 1 , this . _updateAnimation = null ) } } ) , Object . defineProperty ( b . Rope . prototype , "segments" , { get : function ( ) { for ( var a , c , d , e , f , g , h , i , j = [ ] , k = 0 ; k < this . points . length ; k ++ ) a = 4 * k , c = this . verticies [ a ] , d = this . verticies [ a + 1 ] , e = this . verticies [ a + 4 ] , f = this . verticies [ a + 3 ] , g = b . Math . difference ( c , e ) , h = b . Math . difference ( d , f ) , c += this . world . x , d += this . world . y , i = new b . Rectangle ( c , d , g , h ) , j . push ( i ) ; return j } } ) , Object . defineProperty ( b . Rope . prototype , "destroyPhase" , { get : function ( ) { return ! ! this . _cache [ 8 ] } } ) , b . Text = function ( a , c , d , e , f ) { c = c || 0 , d = d || 0 , e = e || " " , f = f || { } , e = 0 === e . length ? " " : e . toString ( ) , this . game = a , this . exists = ! 0 , this . name = "" , this . type = b . TEXT , this . z = 0 , this . world = new b . Point ( c , d ) , this . _text = e , this . _font = "" , this . _fontSize = 32 , this . _fontWeight = "normal" , this . _lineSpacing = 0 , this . events = new b . Events ( this ) , this . input = null , this . cameraOffset = new b . Point , this . setStyle ( f ) , PIXI . Text . call ( this , e , this . style ) , this . position . set ( c , d ) , this . _cache = [ 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 0 ] , " " !== e && this . updateText ( ) } , b . Text . prototype = Object . create ( PIXI . Text . prototype ) , b . Text . prototype . constructor = b . Text , b . Text . prototype . preUpdate = function ( ) { if ( this . _cache [ 0 ] = this . world . x , this . _cache [ 1 ] = this . world . y , this . _c
} , getSmoothingEnabled : function ( a ) { return a . imageSmoothingEnabled || a . mozImageSmoothingEnabled || a . oImageSmoothingEnabled || a . webkitImageSmoothingEnabled || a . msImageSmoothingEnabled } , setImageRenderingCrisp : function ( a ) { return a . style [ "image-rendering" ] = "optimizeSpeed" , a . style [ "image-rendering" ] = "crisp-edges" , a . style [ "image-rendering" ] = "-moz-crisp-edges" , a . style [ "image-rendering" ] = "-webkit-optimize-contrast" , a . style [ "image-rendering" ] = "optimize-contrast" , a . style [ "image-rendering" ] = "pixelated" , a . style . msInterpolationMode = "nearest-neighbor" , a } , setImageRenderingBicubic : function ( a ) { return a . style [ "image-rendering" ] = "auto" , a . style . msInterpolationMode = "bicubic" , a } } , b . Device = function ( a ) { this . game = a , this . desktop = ! 1 , this . iOS = ! 1 , this . cocoonJS = ! 1 , this . cocoonJSApp = ! 1 , this . cordova = ! 1 , this . node = ! 1 , this . nodeWebkit = ! 1 , this . ejecta = ! 1 , this . crosswalk = ! 1 , this . android = ! 1 , this . chromeOS = ! 1 , this . linux = ! 1 , this . macOS = ! 1 , this . windows = ! 1 , this . windowsPhone = ! 1 , this . canvas = ! 1 , this . file = ! 1 , this . fileSystem = ! 1 , this . localStorage = ! 1 , this . webGL = ! 1 , this . worker = ! 1 , this . touch = ! 1 , this . mspointer = ! 1 , this . css3D = ! 1 , this . pointerLock = ! 1 , this . typedArray = ! 1 , this . vibration = ! 1 , this . getUserMedia = ! 1 , this . quirksMode = ! 1 , this . arora = ! 1 , this . chrome = ! 1 , this . epiphany = ! 1 , this . firefox = ! 1 , this . ie = ! 1 , this . ieVersion = 0 , this . trident = ! 1 , this . tridentVersion = 0 , this . mobileSafari = ! 1 , this . midori = ! 1 , this . opera = ! 1 , this . safari = ! 1 , this . webApp = ! 1 , this . silk = ! 1 , this . audioData = ! 1 , this . webAudio = ! 1 , this . ogg = ! 1 , this . opus = ! 1 , this . mp3 = ! 1 , this . wav = ! 1 , this . m4a = ! 1 , this . webm = ! 1 , this . iPhone = ! 1 , this . iPhone4 = ! 1 , this . iPad = ! 1 , this . pixelRatio = 0 , this . littleEndian = ! 1 , this . support32bit = ! 1 , this . fullscreen = ! 1 , this . requestFullscreen = "" , this . cancelFullscreen = "" , this . fullscreenKeyboard = ! 1 , this . _checkOS ( ) , this . _checkAudio ( ) , this . _checkBrowser ( ) , this . _checkCSS3D ( ) , this . _checkDevice ( ) , this . _checkFeatures ( ) } , b . Device . LITTLE _ENDIAN = ! 1 , b . Device . prototype = { _checkOS : function ( ) { var a = navigator . userAgent ; /Playstation Vita/ . test ( a ) ? this . vita = ! 0 : /Kindle/ . test ( a ) || /\bKF[A-Z][A-Z]+/ . test ( a ) || /Silk.*Mobile Safari/ . test ( a ) ? this . kindle = ! 0 : /Android/ . test ( a ) ? this . android = ! 0 : /CrOS/ . test ( a ) ? this . chromeOS = ! 0 : /iP[ao]d|iPhone/i . test ( a ) ? this . iOS = ! 0 : /Linux/ . test ( a ) ? this . linux = ! 0 : /Mac OS/ . test ( a ) ? this . macOS = ! 0 : /Windows/ . test ( a ) && ( this . windows = ! 0 , /Windows Phone/i . test ( a ) && ( this . windowsPhone = ! 0 ) ) , ( this . windows || this . macOS || this . linux && this . silk === ! 1 || this . chromeOS ) && ( this . desktop = ! 0 ) , ( this . windowsPhone || /Windows NT/i . test ( a ) && /Touch/i . test ( a ) ) && ( this . desktop = ! 1 ) } , _checkFeatures : function ( ) { this . canvas = ! ! window . CanvasRenderingContext2D || this . cocoonJS ; try { this . localStorage = ! ! localStorage . getItem } catch ( a ) { this . localStorage = ! 1 } this . file = ! ! ( window . File && window . FileReader && window . FileList && window . Blob ) , this . fileSystem = ! ! window . requestFileSystem , this . webGL = function ( ) { try { var a = document . createElement ( "canvas" ) ; return a . screencanvas = ! 1 , ! ! window . WebGLRenderingContext && ( a . getContext ( "webgl" ) || a . getContext ( "experimental-webgl" ) ) } catch ( b ) { return ! 1 } } ( ) , this . webGL = null === this . webGL || this . webGL === ! 1 ? ! 1 : ! 0 , this . worker = ! ! window . Worker , ( "ontouchstart" in document . documentElement || window . navigator . maxTouchPoints && window . navigator . maxTouchPoints > 1 ) && ( this . touch = ! 0 ) , ( window . navigator . msPointerEnabled || window . navigator . pointerEnabled ) && ( this . mspointer = ! 0 ) , this . pointerLock = "pointerLockElement" in document || "mozPointerLockElement" in document || "webkitPointerLockElement" in document , this . quirksMode = "CSS1Compat" === document . compatMode ? ! 1 : ! 0 , this . getUserMedia = ! ! ( navigator . getUserMedia || navigator . webkitGetUserMedia || navigator . mozGetUserMedia || navigator . msGetUserMedia ) } , checkFullScreenSupport : function ( ) { for ( var a = [ "requestFullscreen" , "requestFullScreen" , "webkitRequestFullscreen" , "webkitRequestFullScreen" , "msRequestFullscreen" , "msRequestFullScreen" , "mozRequestFullScreen" , "mozRequestFullscreen" ] , b = 0 ; b < a . length ; b ++ ) if ( this . game . canvas [ a [ b ] ] ) { this . fullscreen = ! 0 , this . requestFullscreen = a [ b ] ; break } var c = [ "cancelFullScreen" , "exitFullscreen" , "webkitCancelFullScreen" , "webkitExitFullscreen" , "msCancelFullScreen" , "msExitFullscreen" , "mozCancelFullScreen" , "mozExitFullscreen" ] ; if ( this . fullscreen ) for ( var b = 0 ;
} , gamePaused : function ( ) { this . _pauseStarted = this . now , this . events . pause ( ) ; for ( var a = this . _timers . length ; a -- ; ) this . _timers [ a ] . _pause ( ) } , gameResumed : function ( ) { this . time = this . now = Date . now ( ) , this . pauseDuration = this . time - this . _pauseStarted , this . events . resume ( ) ; for ( var a = this . _timers . length ; a -- ; ) this . _timers [ a ] . _resume ( ) } , totalElapsedSeconds : function ( ) { return . 001 * ( this . now - this . _started ) } , elapsedSince : function ( a ) { return this . now - a } , elapsedSecondsSince : function ( a ) { return . 001 * ( this . now - a ) } , reset : function ( ) { this . _started = this . now , this . removeAll ( ) } } , b . Time . prototype . constructor = b . Time , b . Timer = function ( a , c ) { "undefined" == typeof c && ( c = ! 0 ) , this . game = a , this . running = ! 1 , this . autoDestroy = c , this . expired = ! 1 , this . elapsed = 0 , this . events = [ ] , this . onComplete = new b . Signal , this . nextTick = 0 , this . timeCap = 1e3 , this . paused = ! 1 , this . _codePaused = ! 1 , this . _started = 0 , this . _pauseStarted = 0 , this . _pauseTotal = 0 , this . _now = Date . now ( ) , this . _len = 0 , this . _marked = 0 , this . _i = 0 , this . _diff = 0 , this . _newTick = 0 } , b . Timer . MINUTE = 6e4 , b . Timer . SECOND = 1e3 , b . Timer . HALF = 500 , b . Timer . QUARTER = 250 , b . Timer . prototype = { create : function ( a , c , d , e , f , g ) { var h = a ; h += 0 === this . _now ? this . game . time . now : this . _now ; var i = new b . TimerEvent ( this , a , h , d , c , e , f , g ) ; return this . events . push ( i ) , this . order ( ) , this . expired = ! 1 , i } , add : function ( a , b , c ) { return this . create ( a , ! 1 , 0 , b , c , Array . prototype . splice . call ( arguments , 3 ) ) } , repeat : function ( a , b , c , d ) { return this . create ( a , ! 1 , b , c , d , Array . prototype . splice . call ( arguments , 4 ) ) } , loop : function ( a , b , c ) { return this . create ( a , ! 0 , 0 , b , c , Array . prototype . splice . call ( arguments , 3 ) ) } , start : function ( a ) { if ( ! this . running ) { this . _started = this . game . time . now + ( a || 0 ) , this . running = ! 0 ; for ( var b = 0 ; b < this . events . length ; b ++ ) this . events [ b ] . tick = this . events [ b ] . delay + this . _started } } , stop : function ( a ) { this . running = ! 1 , "undefined" == typeof a && ( a = ! 0 ) , a && ( this . events . length = 0 ) } , remove : function ( a ) { for ( var b = 0 ; b < this . events . length ; b ++ ) if ( this . events [ b ] === a ) return this . events [ b ] . pendingDelete = ! 0 , ! 0 ; return ! 1 } , order : function ( ) { this . events . length > 0 && ( this . events . sort ( this . sortHandler ) , this . nextTick = this . events [ 0 ] . tick ) } , sortHandler : function ( a , b ) { return a . tick < b . tick ? - 1 : a . tick > b . tick ? 1 : 0 } , clearPendingEvents : function ( ) { for ( this . _i = this . events . length ; this . _i -- ; ) this . events [ this . _i ] . pendingDelete && this . events . splice ( this . _i , 1 ) ; this . _len = this . events . length , this . _i = 0 } , update : function ( a ) { if ( this . paused ) return ! 0 ; if ( this . elapsed = a - this . _now , this . _now = a , this . elapsed > this . timeCap && this . adjustEvents ( a - this . elapsed ) , this . _marked = 0 , this . clearPendingEvents ( ) , this . running && this . _now >= this . nextTick && this . _len > 0 ) { for ( ; this . _i < this . _len && this . running && this . _now >= this . events [ this . _i ] . tick ; ) this . _newTick = this . _now + this . events [ this . _i ] . delay - ( this . _now - this . events [ this . _i ] . tick ) , this . _newTick < 0 && ( this . _newTick = this . _now + this . events [ this . _i ] . delay ) , this . events [ this . _i ] . loop === ! 0 ? ( this . events [ this . _i ] . tick = this . _newTick , this . events [ this . _i ] . callback . apply ( this . events [ this . _i ] . callbackContext , this . events [ this . _i ] . args ) ) : this . events [ this . _i ] . repeatCount > 0 ? ( this . events [ this . _i ] . repeatCount -- , this . events [ this . _i ] . tick = this . _newTick , this . events [ this . _i ] . callback . apply ( this . events [ this . _i ] . callbackContext , this . events [ this . _i ] . args ) ) : ( this . _marked ++ , this . events [ this . _i ] . pendingDelete = ! 0 , this . events [ this . _i ] . callback . apply ( this . events [ this . _i ] . callbackContext , this . events [ this . _i ] . args ) ) , this . _i ++ ; this . events . length > this . _marked ? this . order ( ) : ( this . expired = ! 0 , this . onComplete . dispatch ( this ) ) } return this . expired && this . autoDestroy ? ! 1 : ! 0 } , pause : function ( ) { this . running && ( this . _codePaused = ! 0 , this . paused || ( this . _pauseStarted = this . game . time . now , this . paused = ! 0 ) ) } , _pause : function ( ) { ! this . paused && this . running && ( this . _pauseStarted = this . game . time . now , this . paused = ! 0 ) } , adjustEvents : function ( a ) { for ( var b = 0 ; b < this . events . length ; b ++ ) if ( ! this . events [ b ] . pendingDelete ) { var c = this . events [ b ] . tick - a ; 0 > c && ( c = 0 ) , this . events [ b ] . tick = this . _now + c } var d = this . nextTick - a ; this . nextTick = 0 > d ? this . _now : this . _now + d } , resume : function ( ) { if ( this . paused ) { var a = this . game . time . now ; this . _pauseTotal += a - this . _now , this . _now = a , this . adjustEvents ( this . _pauseStarted ) , this . paused = ! 1 , this . _codePaused = ! 1 } } , _resume :
for ( var a in this . _tilemaps ) delete this . _tilemaps [ a ] ; for ( var a in this . _binary ) delete this . _binary [ a ] ; for ( var a in this . _bitmapDatas ) delete this . _bitmapDatas [ a ] ; for ( var a in this . _bitmapFont ) delete this . _bitmapFont [ a ] } } , b . Cache . prototype . constructor = b . Cache , b . Loader = function ( a ) { this . game = a , this . isLoading = ! 1 , this . hasLoaded = ! 1 , this . progress = 0 , this . progressFloat = 0 , this . preloadSprite = null , this . crossOrigin = ! 1 , this . baseURL = "" , this . onLoadStart = new b . Signal , this . onFileStart = new b . Signal , this . onFileComplete = new b . Signal , this . onFileError = new b . Signal , this . onLoadComplete = new b . Signal , this . onPackComplete = new b . Signal , this . useXDomainRequest = 9 === this . game . device . ieVersion , this . _packList = [ ] , this . _packIndex = 0 , this . _fileList = [ ] , this . _fileIndex = 0 , this . _progressChunk = 0 , this . _xhr = new XMLHttpRequest , this . _ajax = null } , b . Loader . TEXTURE _ATLAS _JSON _ARRAY = 0 , b . Loader . TEXTURE _ATLAS _JSON _HASH = 1 , b . Loader . TEXTURE _ATLAS _XML _STARLING = 2 , b . Loader . PHYSICS _LIME _CORONA _JSON = 3 , b . Loader . PHYSICS _PHASER _JSON = 4 , b . Loader . prototype = { setPreloadSprite : function ( a , c ) { c = c || 0 , this . preloadSprite = { sprite : a , direction : c , width : a . width , height : a . height , rect : null } , this . preloadSprite . rect = 0 === c ? new b . Rectangle ( 0 , 0 , 1 , a . height ) : new b . Rectangle ( 0 , 0 , a . width , 1 ) , a . crop ( this . preloadSprite . rect ) , a . visible = ! 0 } , checkKeyExists : function ( a , b ) { if ( this . _fileList . length > 0 ) for ( var c = 0 ; c < this . _fileList . length ; c ++ ) if ( this . _fileList [ c ] . type === a && this . _fileList [ c ] . key === b ) return ! 0 ; return ! 1 } , getAssetIndex : function ( a , b ) { if ( this . _fileList . length > 0 ) for ( var c = 0 ; c < this . _fileList . length ; c ++ ) if ( this . _fileList [ c ] . type === a && this . _fileList [ c ] . key === b ) return c ; return - 1 } , getAsset : function ( a , b ) { if ( this . _fileList . length > 0 ) for ( var c = 0 ; c < this . _fileList . length ; c ++ ) if ( this . _fileList [ c ] . type === a && this . _fileList [ c ] . key === b ) return { index : c , file : this . _fileList [ c ] } ; return ! 1 } , reset : function ( ) { this . preloadSprite = null , this . isLoading = ! 1 , this . _packList . length = 0 , this . _packIndex = 0 , this . _fileList . length = 0 , this . _fileIndex = 0 } , addToFileList : function ( a , b , c , d ) { var e = { type : a , key : b , url : c , data : null , error : ! 1 , loaded : ! 1 } ; if ( "undefined" != typeof d ) for ( var f in d ) e [ f ] = d [ f ] ; this . checkKeyExists ( a , b ) === ! 1 && this . _fileList . push ( e ) } , replaceInFileList : function ( a , b , c , d ) { var e = { type : a , key : b , url : c , data : null , error : ! 1 , loaded : ! 1 } ; if ( "undefined" != typeof d ) for ( var f in d ) e [ f ] = d [ f ] ; var g = this . getAssetIndex ( a , b ) ; - 1 === g ? this . _fileList . push ( e ) : this . _fileList [ g ] = e } , pack : function ( a , b , c , d ) { return "undefined" == typeof b && ( b = null ) , "undefined" == typeof c && ( c = null ) , "undefined" == typeof d && ( d = this ) , null === b && null === c ? ( console . warn ( "Phaser.Loader.pack - Both url and data are null. One must be set." ) , this ) : ( c && "string" == typeof c && ( c = JSON . parse ( c ) ) , this . _packList . push ( { key : a , url : b , data : c , loaded : ! 1 , error : ! 1 , callbackContext : d } ) , this ) } , image : function ( a , b , c ) { return "undefined" == typeof c && ( c = ! 1 ) , c ? this . replaceInFileList ( "image" , a , b ) : this . addToFileList ( "image" , a , b ) , this } , text : function ( a , b , c ) { return "undefined" == typeof c && ( c = ! 1 ) , c ? this . replaceInFileList ( "text" , a , b ) : this . addToFileList ( "text" , a , b ) , this } , json : function ( a , b , c ) { return "undefined" == typeof c && ( c = ! 1 ) , c ? this . replaceInFileList ( "json" , a , b ) : this . addToFileList ( "json" , a , b ) , this } , script : function ( a , b , c , d ) { return "undefined" == typeof c && ( c = ! 1 ) , c !== ! 1 && "undefined" == typeof d && ( d = c ) , this . addToFileList ( "script" , a , b , { callback : c , callbackContext : d } ) , this } , binary : function ( a , b , c , d ) { return "undefined" == typeof c && ( c = ! 1 ) , c !== ! 1 && "undefined" == typeof d && ( d = c ) , this . addToFileList ( "binary" , a , b , { callback : c , callbackContext : d } ) , this } , spritesheet : function ( a , b , c , d , e , f , g ) { return "undefined" == typeof e && ( e = - 1 ) , "undefined" == typeof f && ( f = 0 ) , "undefined" == typeof g && ( g = 0 ) , this . addToFileList ( "spritesheet" , a , b , { frameWidth : c , frameHeight : d , frameMax : e , margin : f , spacing : g } ) , this } , audio : function ( a , b , c ) { return "undefined" == typeof c && ( c = ! 0 ) , this . addToFileList ( "audio" , a , b , { buffer : null , autoDecode : c } ) , this } , tilemap : function ( a , c , d , e ) { if ( "undefined" == typeof c && ( c = null ) , "undefined" == typeof d && ( d = null ) , "undefined" == typeof e && ( e = b . Tilemap . CSV ) , null == c && null == d ) return console . warn ( "Phaser.Loader.tilemap - Both url and data are null. One must be set." ) , this ; if ( d ) { switch ( e ) { case b . Tilemap . CSV : br
} , preUpdate : function ( ) { this . dirty && this . sprite && ( this . context . clearRect ( 0 , 0 , this . game . width , this . game . height ) , this . dirty = ! 1 ) } , start : function ( a , b , c , d ) { "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 . sprite && ( this . dirty = ! 0 ) , 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 , this . sprite && PIXI . updateWebGLTexture ( this . baseTexture , this . game . renderer . gl ) } , line : function ( ) { 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 } , soundInfo : function ( a , b , c , d ) { 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 + " (ms: " + a . durationMS + ")" ) , this . line ( "Start: " + a . markers [ a . currentMarker ] . start + " Stop: " + a . markers [ a . currentMarker ] . stop ) , this . line ( "Position: " + a . position ) ) , this . stop ( ) } , cameraInfo : function ( a , b , c , d ) { this . start ( b , c , d ) , this . line ( "Camera (" + a . width + " x " + a . height + ")" ) , this . line ( "X: " + a . x + " Y: " + a . y ) , a . bounds && this . line ( "Bounds x: " + a . bounds . x + " Y: " + a . bounds . y + " w: " + a . bounds . width + " h: " + a . bounds . height ) , this . line ( "View x: " + a . view . x + " Y: " + a . view . y + " w: " + a . view . width + " h: " + a . view . height ) , this . stop ( ) } , timer : function ( a , b , c , d ) { this . start ( b , c , d ) , this . line ( "Timer (running: " + a . running + " expired: " + a . expired + ")" ) , this . line ( "Next Tick: " + a . next + " Duration: " + a . duration ) , this . line ( "Paused: " + a . paused + " Length: " + a . length ) , this . stop ( ) } , pointer : function ( a , b , c , d , e ) { null != a && ( "undefined" == typeof b && ( b = ! 1 ) , c = c || "rgba(0,255,0,0.5)" , d = d || "rgba(255,0,0,0.5)" , ( b !== ! 0 || a . isUp !== ! 0 ) && ( this . start ( a . x , a . y - 100 , e ) , this . context . beginPath ( ) , this . context . arc ( a . x , a . y , a . circle . radius , 0 , 2 * Math . PI ) , this . context . fillStyle = a . active ? c : d , this . context . fill ( ) , this . context . closePath ( ) , this . context . beginPath ( ) , this . context . moveTo ( a . positionDown . x , a . positionDown . y ) , this . context . lineTo ( a . position . x , a . position . y ) , this . context . lineWidth = 2 , this . context . stroke ( ) , this . context . closePath ( ) , this . line ( "ID: " + a . id + " Active: " + a . active ) , this . line ( "World X: " + a . worldX + " World Y: " + a . worldY ) , this . line ( "Screen X: " + a . x + " Screen Y: " + a . y ) , this . line ( "Duration: " + a . duration + " ms" ) , this . line ( "is Down: " + a . isDown + " is Up: " + a . isUp ) , this . stop ( ) ) ) } , spriteInputInfo : function ( a , b , c , d ) { this . start ( b , c , d ) , this . line ( "Sprite Input: (" + a . width + " x " + a . height + ")" ) , this . line ( "x: " + a . input . pointerX ( ) . toFixed ( 1 ) + " y: " + a . input . pointerY ( ) . toFixed ( 1 ) ) , this . line ( "over: " + a . input . pointerOver ( ) + " duration: " + a . input . overDuration ( ) . toFixed ( 0 ) ) , this . line ( "down: " + a . input . pointerDown ( ) + " duration: " + a . input . downDuration ( ) . toFixed ( 0 ) ) , this . line ( "just over: " + a . input . justOver ( ) + " just out: " + a . input . justOut ( ) ) , this . stop ( ) } , key : function ( a , b , c , d ) { this . start ( b , c , d , 150 ) , this . line ( "Key:" , a . keyCode , "isDown:" , a . isDown ) , this . line ( "justPressed:" , a . justPressed ( ) , "justReleased:" , a . justReleased ( ) ) , this . line ( "Time Down:" , a . timeDown . toFixed ( 0 ) , "duration:" , a . duration . toFixed ( 0 ) ) , this . stop ( ) } , inputInfo : function ( a , b , c ) { this . start ( a , b , c ) , this . line ( "Input" ) , this . line ( "X: " + this . game . input . x + " Y: " + this . game . input . y ) , this . line ( "World X: " + this . game . input . worldX + " World Y: " + this . game . input . worldY ) , this . line ( "Scale X: " + th
} , b . Physics . Arcade . Body . prototype = { updateBounds : function ( ) { var a = Math . abs ( this . sprite . scale . x ) , b = Math . abs ( this . sprite . scale . y ) ; ( a !== this . _sx || b !== this . _sy ) && ( this . width = this . sourceWidth * a , this . height = this . sourceHeight * b , this . halfWidth = Math . floor ( this . width / 2 ) , this . halfHeight = Math . floor ( this . height / 2 ) , this . _sx = a , this . _sy = b , this . center . setTo ( this . position . x + this . halfWidth , this . position . y + this . halfHeight ) , this . _reset = ! 0 ) } , preUpdate : function ( ) { this . enable && ( this . phase = 1 , this . wasTouching . none = this . touching . none , this . wasTouching . up = this . touching . up , this . wasTouching . down = this . touching . down , this . wasTouching . left = this . touching . left , this . wasTouching . right = this . touching . right , this . touching . none = ! 0 , this . touching . up = ! 1 , this . touching . down = ! 1 , this . touching . left = ! 1 , this . touching . right = ! 1 , this . blocked . up = ! 1 , this . blocked . down = ! 1 , this . blocked . left = ! 1 , this . blocked . right = ! 1 , this . embedded = ! 1 , this . updateBounds ( ) , this . position . x = this . sprite . world . x - this . sprite . anchor . x * this . width + this . offset . x , this . position . y = this . sprite . world . y - this . sprite . anchor . y * this . height + this . offset . y , this . rotation = this . sprite . angle , this . preRotation = this . rotation , ( this . _reset || 1 === this . sprite . _cache [ 4 ] ) && ( this . prev . x = this . position . x , this . prev . y = this . position . y ) , this . moves && ( this . game . physics . arcade . updateMotion ( this ) , this . newVelocity . set ( this . velocity . x * this . game . time . physicsElapsed , this . velocity . y * this . game . time . physicsElapsed ) , this . position . x += this . newVelocity . x , this . position . y += this . newVelocity . y , ( this . position . x !== this . prev . x || this . position . y !== this . prev . y ) && ( this . speed = Math . sqrt ( this . velocity . x * this . velocity . x + this . velocity . y * this . velocity . y ) , this . angle = Math . atan2 ( this . velocity . y , this . velocity . x ) ) , this . collideWorldBounds && this . checkWorldBounds ( ) ) , this . _dx = this . deltaX ( ) , this . _dy = this . deltaY ( ) , this . _reset = ! 1 ) } , postUpdate : function ( ) { this . enable && 2 !== this . phase && ( this . phase = 2 , this . deltaX ( ) < 0 ? this . facing = b . LEFT : this . deltaX ( ) > 0 && ( this . facing = b . RIGHT ) , this . deltaY ( ) < 0 ? this . facing = b . UP : this . deltaY ( ) > 0 && ( this . facing = b . DOWN ) , this . moves && ( this . _dx = this . deltaX ( ) , this . _dy = this . deltaY ( ) , 0 !== this . deltaMax . x && 0 !== this . _dx && ( this . _dx < 0 && this . _dx < - this . deltaMax . x ? this . _dx = - this . deltaMax . x : this . _dx > 0 && this . _dx > this . deltaMax . x && ( this . _dx = this . deltaMax . x ) ) , 0 !== this . deltaMax . y && 0 !== this . _dy && ( this . _dy < 0 && this . _dy < - this . deltaMax . y ? this . _dy = - this . deltaMax . y : this . _dy > 0 && this . _dy > this . deltaMax . y && ( this . _dy = this . deltaMax . y ) ) , this . sprite . x += this . _dx , this . sprite . y += this . _dy ) , this . center . setTo ( this . position . x + this . halfWidth , this . position . y + this . halfHeight ) , this . allowRotation && ( this . sprite . angle += this . deltaZ ( ) ) , this . prev . x = this . position . x , this . prev . y = this . position . y ) } , destroy : function ( ) { this . sprite . body = null , this . sprite = null } , checkWorldBounds : function ( ) { this . position . x < this . game . physics . arcade . bounds . x && this . game . physics . arcade . checkCollision . left ? ( this . position . x = this . game . physics . arcade . bounds . x , this . velocity . x *= - this . bounce . x , this . blocked . left = ! 0 ) : this . right > this . game . physics . arcade . bounds . right && this . game . physics . arcade . checkCollision . right && ( this . position . x = this . game . physics . arcade . bounds . right - this . width , this . velocity . x *= - this . bounce . x , this . blocked . right = ! 0 ) , this . position . y < this . game . physics . arcade . bounds . y && this . game . physics . arcade . checkCollision . up ? ( this . position . y = this . game . physics . arcade . bounds . y , this . velocity . y *= - this . bounce . y , this . blocked . up = ! 0 ) : this . bottom > this . game . physics . arcade . bounds . bottom && this . game . physics . arcade . checkCollision . down && ( this . position . y = this . game . physics . arcade . bounds . bottom - this . height , this . velocity . y *= - this . bounce . y , this . blocked . down = ! 0 ) } , setSize : function ( a , b , c , d ) { "undefined" == typeof c && ( c = this . offset . x ) , "undefined" == typeof d && ( d = this . offset . y ) , this . sourceWidth = a , this . sourceHeight = b , this . width = this . sourceWidth * this . _sx , this . height = this . sourceHeight * this . _sy , this . halfWidth = Math . floor ( this . width / 2 ) , this . halfHeight = Math . floor ( this . height / 2 ) , this . offset . setTo ( c , d ) , this . center . setTo ( this . position . x + this . halfWidth , this . position . y + this . halfHeight ) } , reset : function ( a , b ) { this . velocity . set ( 0 ) , this . acceleration . set ( 0 ) , this . angularVelocity = 0 , this . angularAcceleration = 0 , this .
} , b . TilemapLayer . prototype . getTileY = function ( a ) { return this . game . math . snapToFloor ( this . _fixY ( a ) , this . map . tileHeight ) / this . map . tileHeight } , b . TilemapLayer . prototype . getTileXY = function ( a , b , c ) { return c . x = this . getTileX ( a ) , c . y = this . getTileY ( b ) , c } , b . TilemapLayer . prototype . getRayCastTiles = function ( a , b , c , d ) { ( "undefined" == typeof b || null === b ) && ( b = this . rayStepRate ) , "undefined" == typeof c && ( c = ! 1 ) , "undefined" == typeof d && ( d = ! 1 ) ; var e = this . getTiles ( a . x , a . y , a . width , a . height , c , d ) ; if ( 0 === e . length ) return [ ] ; for ( var f = a . coordinatesOnLine ( b ) , g = f . length , h = [ ] , i = 0 ; i < e . length ; i ++ ) for ( var j = 0 ; g > j ; j ++ ) if ( e [ i ] . containsPoint ( f [ j ] [ 0 ] , f [ j ] [ 1 ] ) ) { h . push ( e [ i ] ) ; break } return h } , b . TilemapLayer . prototype . getTiles = function ( a , b , c , d , e , f ) { "undefined" == typeof e && ( e = ! 1 ) , "undefined" == typeof f && ( f = ! 1 ) , a = this . _fixX ( a ) , b = this . _fixY ( b ) , c > this . layer . widthInPixels && ( c = this . layer . widthInPixels ) , d > this . layer . heightInPixels && ( d = this . layer . heightInPixels ) , this . _mc . tx = this . game . math . snapToFloor ( a , this . _mc . cw ) / this . _mc . cw , this . _mc . ty = this . game . math . snapToFloor ( b , this . _mc . ch ) / this . _mc . ch , this . _mc . tw = ( this . game . math . snapToCeil ( c , this . _mc . cw ) + this . _mc . cw ) / this . _mc . cw , this . _mc . th = ( this . game . math . snapToCeil ( d , this . _mc . ch ) + this . _mc . ch ) / this . _mc . ch , this . _results . length = 0 ; for ( var g = this . _mc . ty ; g < this . _mc . ty + this . _mc . th ; g ++ ) for ( var h = this . _mc . tx ; h < this . _mc . tx + this . _mc . tw ; h ++ ) this . layer . data [ g ] && this . layer . data [ g ] [ h ] && ( ! e && ! f || this . layer . data [ g ] [ h ] . isInteresting ( e , f ) ) && this . _results . push ( this . layer . data [ g ] [ h ] ) ; return this . _results } , b . TilemapLayer . prototype . updateMax = function ( ) { this . _mc . maxX = this . game . math . ceil ( this . canvas . width / this . map . tileWidth ) + 1 , this . _mc . maxY = this . game . math . ceil ( this . canvas . height / this . map . tileHeight ) + 1 , this . dirty = ! 0 } , b . TilemapLayer . prototype . render = function ( ) { if ( this . layer . dirty && ( this . dirty = ! 0 ) , this . dirty && this . visible ) { this . _mc . prevX = this . _mc . dx , this . _mc . prevY = this . _mc . dy , this . _mc . dx = - ( this . _mc . x - this . _mc . startX * this . map . tileWidth ) , this . _mc . dy = - ( this . _mc . y - this . _mc . startY * this . map . tileHeight ) , this . _mc . tx = this . _mc . dx , this . _mc . ty = this . _mc . dy , this . context . clearRect ( 0 , 0 , this . canvas . width , this . canvas . height ) , this . context . fillStyle = this . tileColor ; var a , c ; this . debug && ( this . context . globalAlpha = this . debugAlpha ) ; for ( var d = this . _mc . startY , e = this . _mc . startY + this . _mc . maxY ; e > d ; d ++ ) { if ( this . _column = null , 0 > d && this . wrap ? this . _column = this . layer . data [ d + this . map . height ] : d >= this . map . height && this . wrap ? this . _column = this . layer . data [ d - this . map . height ] : this . layer . data [ d ] && ( this . _column = this . layer . data [ d ] ) , this . _column ) for ( var f = this . _mc . startX , g = this . _mc . startX + this . _mc . maxX ; g > f ; f ++ ) { var a = null ; 0 > f && this . wrap ? a = this . _column [ f + this . map . width ] : f >= this . map . width && this . wrap ? a = this . _column [ f - this . map . width ] : this . _column [ f ] && ( a = this . _column [ f ] ) , a && a . index > - 1 && ( c = this . map . tilesets [ this . map . tiles [ a . index ] [ 2 ] ] , this . debug === ! 1 && a . alpha !== this . context . globalAlpha && ( this . context . globalAlpha = a . alpha ) , c . draw ( this . context , Math . floor ( this . _mc . tx ) , Math . floor ( this . _mc . ty ) , a . index ) , a . debug && ( this . context . fillStyle = "rgba(0, 255, 0, 0.4)" , this . context . fillRect ( Math . floor ( this . _mc . tx ) , Math . floor ( this . _mc . ty ) , this . map . tileWidth , this . map . tileHeight ) ) ) , this . _mc . tx += this . map . tileWidth } this . _mc . tx = this . _mc . dx , this . _mc . ty += this . map . tileHeight } return this . debug && ( this . context . globalAlpha = 1 , this . renderDebug ( ) ) , this . game . renderType === b . WEBGL && PIXI . updateWebGLTexture ( this . baseTexture , this . game . renderer . gl ) , this . dirty = ! 1 , this . layer . dirty = ! 1 , ! 0 } } , b . TilemapLayer . prototype . renderDebug = function ( ) { this . _mc . tx = this . _mc . dx , this . _mc . ty = this . _mc . dy , this . context . strokeStyle = this . debugColor , this . context . fillStyle = this . debugFillColor ; for ( var a = this . _mc . startY , b = this . _mc . startY + this . _mc . maxY ; b > a ; a ++ ) { if ( this . _column = null , 0 > a && this . wrap ? this . _column = this . layer . data [ a + this . map . height ] : a >= this . map . height && this . wrap ? this . _column = this . layer . data [ a - this . map . height ] : this . layer . data [ a ] && ( this . _column = this . layer . data [ a ] ) , this . _column ) for ( var c = this . _mc . startX , d = this . _mc . startX + this . _mc . maxX ; d > c ; c ++ ) { var e = null ; 0 > c && this . wrap ? e = this . _column [ c + this . map . width ] : c >= this . map . width && this . wrap ? e = this . _column [ c - this . map . width ] : this . _column [ c ] && ( e = this . _