2014-08-28 03:53:05 +00:00
/* Phaser (no libs) v2.1.0 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */
( function ( ) { var a = this , b = b || { VERSION : "2.1.0-dev" , 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 ] } }
} , 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 ) } , 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 . 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 > - 1 ? ( this . list . splice ( b , 1 ) , this . total -- , a ) : void 0 } , setAll : function ( a , b ) { for ( var c = this . list . length ; c -- ; ) this . list [ c ] && this . list [ c ] [ a ] && ( this . list [ c ] [ a ] = b ) } , callAll : function ( a ) { for ( var b = Array . prototype . splice . call ( arguments , 1 ) , c = this . list . length ; c -- ; ) this . list [ c ] && this . list [ c ] [ a ] && this . list [ c ] [ a ] . apply ( this . list [ c ] , b ) } } , Object . defineProperty ( b . ArrayList . prototype , "first" , { get : function ( ) { return this . position = 0 , this . total > 0 ? this . list [ 0 ] : null } } ) , Object . defineProperty ( b . ArrayList . prototype , "next" , { get : function ( ) { return this . position < this . total ? ( this . position ++ , this . list [ this . position ] ) : null } } ) , b . ArrayList . prototype . constructor = b . ArrayList , b . Signal = function ( ) { this . _bindings = [ ] , this . _prevParams = null ; var a = this ; this . dispatch = function ( ) { b . Signal . prototype . dispatch . apply ( a , arguments ) } } , b . Signal . prototype = { memorize : ! 1 , _shouldPropagate : ! 0 , active : ! 0 , validateListener : function ( a , b ) { if ( "function" != typeof a ) throw new Error ( "Phaser.Signal: listener is a required param of {fn}() and should be a Function." . r
} , forceOrientation : function ( a , c , d ) { "undefined" == typeof c && ( c = ! 1 ) , this . forceLandscape = a , this . forcePortrait = c , "undefined" != typeof d && ( ( null === d || this . game . cache . checkImageKey ( d ) === ! 1 ) && ( d = "__default" ) , this . orientationSprite = new b . Image ( this . game , this . game . width / 2 , this . game . height / 2 , d ) , this . orientationSprite . anchor . set ( . 5 ) , this . checkOrientationState ( ) , this . incorrectOrientation ? ( this . orientationSprite . visible = ! 0 , this . game . world . visible = ! 1 ) : ( this . orientationSprite . visible = ! 1 , this . game . world . visible = ! 0 ) , this . game . stage . addChild ( this . orientationSprite ) ) } , checkOrientationState : function ( ) { this . incorrectOrientation ? ( this . forceLandscape && window . innerWidth > window . innerHeight || this . forcePortrait && window . innerHeight > window . innerWidth ) && ( this . incorrectOrientation = ! 1 , this . leaveIncorrectOrientation . dispatch ( ) , this . orientationSprite && ( this . orientationSprite . visible = ! 1 , this . game . world . visible = ! 0 ) , this . scaleMode !== b . ScaleManager . NO _SCALE && this . refresh ( ) ) : ( this . forceLandscape && window . innerWidth < window . innerHeight || this . forcePortrait && window . innerHeight < window . innerWidth ) && ( this . incorrectOrientation = ! 0 , this . enterIncorrectOrientation . dispatch ( ) , this . orientationSprite && this . orientationSprite . visible === ! 1 && ( this . orientationSprite . visible = ! 0 , this . game . world . visible = ! 1 ) , this . scaleMode !== b . ScaleManager . NO _SCALE && this . refresh ( ) ) } , checkOrientation : function ( a ) { this . event = a , this . orientation = window . orientation , this . isLandscape ? this . enterLandscape . dispatch ( this . orientation , ! 0 , ! 1 ) : this . enterPortrait . dispatch ( this . orientation , ! 1 , ! 0 ) , this . scaleMode !== b . ScaleManager . NO _SCALE && this . refresh ( ) } , checkResize : function ( a ) { this . event = a , this . orientation = window . outerWidth > window . outerHeight ? 90 : 0 , this . isLandscape ? this . enterLandscape . dispatch ( this . orientation , ! 0 , ! 1 ) : this . enterPortrait . dispatch ( this . orientation , ! 1 , ! 0 ) , this . scaleMode !== b . ScaleManager . NO _SCALE && this . refresh ( ) , this . checkOrientationState ( ) } , refresh : function ( ) { if ( this . game . device . iPad || this . game . device . webApp || this . game . device . desktop || ( this . game . device . android && ! this . game . device . chrome ? window . scrollTo ( 0 , 1 ) : window . scrollTo ( 0 , 0 ) ) , null === this . _check && this . maxIterations > 0 ) { this . _iterations = this . maxIterations ; var a = this ; this . _check = window . setInterval ( function ( ) { return a . setScreenSize ( ) } , 10 ) , this . setScreenSize ( ) } } , setScreenSize : function ( a ) { "undefined" == typeof a && ( a = ! 1 ) , this . game . device . iPad || this . game . device . webApp || this . game . device . desktop || ( this . game . device . android && ! this . game . device . chrome ? window . scrollTo ( 0 , 1 ) : window . scrollTo ( 0 , 0 ) ) , this . _iterations -- , ( a || window . innerHeight > this . _startHeight || this . _iterations < 0 ) && ( document . documentElement . style . minHeight = window . innerHeight + "px" , this . incorrectOrientation ? this . setMaximum ( ) : this . isFullScreen ? this . fullScreenScaleMode === b . ScaleManager . EXACT _FIT ? this . setExactFit ( ) : this . fullScreenScaleMode === b . ScaleManager . SHOW _ALL && this . setShowAll ( ) : this . scaleMode === b . ScaleManager . EXACT _FIT ? this . setExactFit ( ) : this . scaleMode === b . ScaleManager . SHOW _ALL && this . setShowAll ( ) , this . setSize ( ) , clearInterval ( this . _check ) , this . _check = null ) } , setSize : function ( ) { this . incorrectOrientation || ( this . maxWidth && this . width > this . maxWidth && ( this . width = this . maxWidth ) , this . maxHeight && this . height > this . maxHeight && ( this . height = this . maxHeight ) , this . minWidth && this . width < this . minWidth && ( this . width = this . minWidth ) , this . minHeight && this . height < this . minHeight && ( this . height = this . minHeight ) ) , this . game . canvas . style . width = this . width + "px" , this . game . canvas . style . height = this . height + "px" , this . game . input . scale . setTo ( this . game . width / this . width , this . game . height / this . height ) , this . pageAlignHorizontally && ( this . width < window . innerWidth && ! this . incorrectOrientation ? ( this . margin . x = Math . round ( ( window . innerWidth - this . width ) / 2 ) , this . game . canvas . style . marginLeft = this . margin . x + "px" ) : ( this . margin . x = 0 , this . game . canvas . style . marginLeft = "0px" ) ) , this . pageAlignVertically && ( this . height < window . innerHeight && ! this . incorrectOrientation ? ( this . margin . y = Math . round ( ( window . innerHeight - this . height ) / 2 ) , this . game . canvas . style . marginTop = this . margin . y + "px" ) : ( this . margin . y = 0 , this . game . canvas . style . marginTop = "0px" ) ) , b . Canvas . getOffset ( this . game . canvas , this . game . stage
} , requestPointerLock : function ( ) { if ( this . game . device . pointerLock ) { var a = this . game . canvas ; a . requestPointerLock = a . requestPointerLock || a . mozRequestPointerLock || a . webkitRequestPointerLock , a . requestPointerLock ( ) ; var b = this ; this . _pointerLockChange = function ( a ) { return b . pointerLockChange ( a ) } , document . addEventListener ( "pointerlockchange" , this . _pointerLockChange , ! 0 ) , document . addEventListener ( "mozpointerlockchange" , this . _pointerLockChange , ! 0 ) , document . addEventListener ( "webkitpointerlockchange" , this . _pointerLockChange , ! 0 ) } } , pointerLockChange : function ( a ) { var b = this . game . canvas ; document . pointerLockElement === b || document . mozPointerLockElement === b || document . webkitPointerLockElement === b ? ( this . locked = ! 0 , this . pointerLock . dispatch ( ! 0 , a ) ) : ( this . locked = ! 1 , this . pointerLock . dispatch ( ! 1 , a ) ) } , releasePointerLock : function ( ) { document . exitPointerLock = document . exitPointerLock || document . mozExitPointerLock || document . webkitExitPointerLock , document . exitPointerLock ( ) , document . removeEventListener ( "pointerlockchange" , this . _pointerLockChange , ! 0 ) , document . removeEventListener ( "mozpointerlockchange" , this . _pointerLockChange , ! 0 ) , document . removeEventListener ( "webkitpointerlockchange" , this . _pointerLockChange , ! 0 ) } , stop : function ( ) { this . game . canvas . removeEventListener ( "mousedown" , this . _onMouseDown , ! 0 ) , this . game . canvas . removeEventListener ( "mousemove" , this . _onMouseMove , ! 0 ) , this . game . canvas . removeEventListener ( "mouseup" , this . _onMouseUp , ! 0 ) , this . game . canvas . removeEventListener ( "mouseover" , this . _onMouseOver , ! 0 ) , this . game . canvas . removeEventListener ( "mouseout" , this . _onMouseOut , ! 0 ) , this . game . canvas . removeEventListener ( "mousewheel" , this . _onMouseWheel , ! 0 ) , this . game . canvas . removeEventListener ( "DOMMouseScroll" , this . _onMouseWheel , ! 0 ) , document . removeEventListener ( "pointerlockchange" , this . _pointerLockChange , ! 0 ) , document . removeEventListener ( "mozpointerlockchange" , this . _pointerLockChange , ! 0 ) , document . removeEventListener ( "webkitpointerlockchange" , this . _pointerLockChange , ! 0 ) } } , b . Mouse . prototype . constructor = b . Mouse , b . MSPointer = function ( a ) { this . game = a , this . callbackContext = this . game , this . disabled = ! 1 , this . _onMSPointerDown = null , this . _onMSPointerMove = null , this . _onMSPointerUp = null } , b . 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 . disabled || this . disabled || ( a . preventDefault ( ) , a . identifier = a . pointerId , this . game . input . startPointer ( a ) ) } , onPointerMove : function ( a ) { this . game . input . disabled || this . disabled || ( a . preventDefault ( ) , a . identifier = a . pointerId , this . game . input . updatePointer ( a ) ) } , onPointerUp : function ( a ) { this . game . input . disabled || this . disabled || ( 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 ) } } , b . MSPointer . prototype . constructor = b . MSPointer , b . Pointer = function ( a , c ) { this . game = a , this . id = c , this . type = b . POINTER , this . exists = ! 0 , this . identifier = 0 , this . pointerId = null , this . target = null , this . button = null , this . _holdSent = !
var d = this . game . input . hitContext . getImageData ( 0 , 0 , 1 , 1 ) ; if ( d . data [ 3 ] >= this . pixelPerfectAlpha ) return ! 0 } return ! 1 } , update : function ( a ) { return null !== this . sprite && void 0 !== this . sprite . parent ? this . enabled && this . sprite . visible && this . sprite . parent . visible ? this . draggable && this . _draggedPointerID == a . id ? this . updateDrag ( a ) : this . _pointerData [ a . id ] . isOver === ! 0 ? this . checkPointerOver ( a ) ? ( this . _pointerData [ a . id ] . x = a . x - this . sprite . x , this . _pointerData [ a . id ] . y = a . y - this . sprite . y , ! 0 ) : ( this . _pointerOutHandler ( a ) , ! 1 ) : void 0 : ( this . _pointerOutHandler ( a ) , ! 1 ) : void 0 } , _pointerOverHandler : function ( a ) { null !== this . sprite && this . _pointerData [ a . id ] . isOver === ! 1 && ( this . _pointerData [ a . id ] . isOver = ! 0 , this . _pointerData [ a . id ] . isOut = ! 1 , this . _pointerData [ a . id ] . timeOver = this . game . time . now , 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 . now , 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 . now , this . sprite && this . sprite . events && this . sprite . events . onInputDown . dispatch ( this . sprite , a ) , 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 . now , 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 ) ) , this . draggable && this . isDragged && this . _draggedPointerID === a . id && this . stopDrag ( a ) ) } , updateDrag : function ( a ) { return a . isUp ? ( this . stopDrag ( a ) , ! 1 ) : ( this . sprite . fixedToCamera ? ( this . allowHorizontalDrag && ( this . sprite . cameraOffset . x = a . x + this . _dragPoint . x + this . dragOffset . x ) , this . allowVerticalDrag && ( this . sprite . cameraOffset . y = a . y + this . _dragPoint . y + this . dragOffset . y ) , 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 = a . x + this . _dragPoint . x + this . dragOffset . x ) , this . allowVerticalDrag && ( this . sprite . y = a . y + this . _dragPoint . y + this . dragOffset . y ) , 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 . now - this . _pointerData [ a ] . timeOut < b } , justPressed : function ( a , b ) { return a = a || 0 , b
} , 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 . Sprite . 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 . Sprite . prototype , "destroyPhase" , { get : function ( ) { return ! ! this . _cache [ 8 ] } } ) , b . Image = function ( a , c , d , e , f ) { c = c || 0 , d = d || 0 , e = e || null , f = f || null , this . game = a , this . exists = ! 0 , this . name = "" , this . type = b . IMAGE , this . z = 0 , this . events = new b . Events ( this ) , this . key = e , this . _frame = 0 , this . _frameName = "" , PIXI . Sprite . call ( this , PIXI . TextureCache . _ _default ) , this . loadTexture ( e , f ) , this . position . set ( c , d ) , this . world = new b . Point ( c , d ) , this . autoCull = ! 1 , this . input = null , this . cameraOffset = new b . Point , this . _cache = [ 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 0 ] } , b . Image . prototype = Object . create ( PIXI . Sprite . prototype ) , b . Image . prototype . constructor = b . Image , b . Image . prototype . preUpdate = function ( ) { if ( this . _cache [ 0 ] = this . world . x , this . _cache [ 1 ] = this . world . y , this . _cache [ 2 ] = this . rotation , ! this . exists || ! this . parent . exists ) return this . _cache [ 3 ] = - 1 , ! 1 ; this . autoCull && ( this . renderable = this . game . world . camera . screenView . intersects ( this . getBounds ( ) ) ) , this . world . setTo ( this . game . camera . x + this . worldTransform . tx , this . game . camera . y + this . worldTransform . ty ) , this . visible && ( this . _cache [ 3 ] = this . game . stage . currentRenderOrderID ++ ) ; for ( var a = 0 , b = this . children . length ; b > a ; a ++ ) this . children [ a ] . preUpdate ( ) ; return ! 0 } , b . Image . prototype . update = function ( ) { } , b . Image . prototype . postUpdate = function ( ) { this . key instanceof b . BitmapData && this . key . render ( ) , 1 === this . _cache [ 7 ] && ( this . position . x = ( this . game . camera . view . x + this . cameraOffset . x ) / this . game . camera . scale . x , this . position . y = ( this . game . camera . view . y + this . cameraOffset . y ) / this . game . camera . scale . y ) ; for ( var a = 0 , c = this . children . length ; c > a ; a ++ ) this . children [ a ] . postUpdate ( ) } , b . Image . prototype . loadTexture = function ( a , c ) { if ( c = c || 0 , a instanceof b . RenderTexture ) return this . key = a . key , void this . setTexture ( a ) ; if ( a instanceof b . BitmapData ) return this . key = a , void this . setTexture ( a . texture ) ; if ( a instanceof PIXI . Texture ) return this . key = a , void this . setTexture ( a ) ; if ( null === a || "undefined" == typeof a ) return this . key = "__default" , void this . setTexture ( PIXI . TextureCache [ this . key ] ) ; if ( "string" == typeof a && ! this . game . cache . checkImageKey ( a ) ) return this . key = "__missing" , void this . setTexture ( PIXI . TextureCache [ this . key ] ) ; this . key = a ; var d = this . game . cache . getFrameData ( a ) ; "string" == typeof c ? ( this . _frame = 0 , this . _frameName = c , this . setTexture ( PIXI . TextureCache [ d . getFrameByName ( c ) . uuid ] ) ) : ( this . _frame = c , this . _frameName = "" , this . setTexture ( PIXI . TextureCache [ d . getFrame ( c ) . uuid ] ) ) } , b . Image . prototype . crop = function ( a ) { if ( "undefined" == typeof a || null === a ) this . texture . hasOwnProperty ( "sourceWidth" ) && this . texture . setFrame ( new b . Rectangle ( 0 , 0 , this . texture . sourceWidth , this . texture . sourceHeight ) ) ; else if ( this . texture instanceof PIXI . Texture ) { var c = { } ; b . Utils . extend ( ! 0 , c , this . texture ) , c . sourceWidth = c . width , c . sourceHeight = c . height , c . frame = a , c . width = a . width , c . height = a . height , this . texture = c , this . texture . updateFrame = ! 0 , PIXI . Texture . frameUpdates . push ( this . texture ) } else this . texture . setFrame ( a ) } , b . Image . prototype . revive = function ( ) { return this . alive = ! 0 , this . exists = ! 0 , this . visible = ! 0 , this . events && this . events . onRevived . dispatch ( this ) , this } , b . Image . prototype . kill = function ( ) { return this . alive = ! 1 , this . exists = ! 1 , this . visible = ! 1 , this . events && this . events . onKilled . dispatch ( this ) , this } , b . Image . 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 . parent && ( this . parent instanceof b . Group ? this . parent . remove ( this ) : this . parent . removeChild ( this ) ) , this . events && this . events . destroy ( ) , this . input && this . input . destroy ( ) ; var c = this . children . length ; if ( a ) for ( ; c -- ; ) this . children [ c ] . destroy ( a ) ; else for ( ; c -- ; ) this . removeChild ( this . children [ c ] ) ; this . alive = ! 1 , this . exists = ! 1 , this . visible = ! 1 , this . filters = null , this . mask = null , this . game = null , this . _cache [ 8 ] = 0 } } , b . Image . prototype . reset = function ( a , b ) { return this . worl
} , set : function ( a ) { a !== this . _text && ( this . _text = a . toString ( ) || " " , this . dirty = ! 0 ) } } ) , Object . defineProperty ( b . BitmapText . 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 . BitmapText . 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 . BitmapText . prototype , "destroyPhase" , { get : function ( ) { return ! ! this . _cache [ 8 ] } } ) , b . Button = function ( a , c , d , e , f , g , h , i , j , k ) { c = c || 0 , d = d || 0 , e = e || null , f = f || null , g = g || this , b . Image . call ( this , a , c , d , e , i ) , this . type = b . BUTTON , this . _onOverFrameName = null , this . _onOutFrameName = null , this . _onDownFrameName = null , this . _onUpFrameName = null , this . _onOverFrameID = null , this . _onOutFrameID = null , this . _onDownFrameID = null , this . _onUpFrameID = null , this . onOverMouseOnly = ! 1 , this . onOverSound = null , this . onOutSound = null , this . onDownSound = null , this . onUpSound = null , this . onOverSoundMarker = "" , this . onOutSoundMarker = "" , this . onDownSoundMarker = "" , this . onUpSoundMarker = "" , this . onInputOver = new b . Signal , this . onInputOut = new b . Signal , this . onInputDown = new b . Signal , this . onInputUp = new b . Signal , this . freezeFrames = ! 1 , this . forceOut = ! 1 , this . inputEnabled = ! 0 , this . input . start ( 0 , ! 0 ) , this . setFrames ( h , i , j , k ) , null !== f && this . onInputUp . add ( f , g ) , this . events . onInputOver . add ( this . onInputOverHandler , this ) , this . events . onInputOut . add ( this . onInputOutHandler , this ) , this . events . onInputDown . add ( this . onInputDownHandler , this ) , this . events . onInputUp . add ( this . onInputUpHandler , this ) } , b . Button . prototype = Object . create ( b . Image . prototype ) , b . Button . prototype . constructor = b . Button , b . Button . prototype . clearFrames = function ( ) { this . _onOverFrameName = null , this . _onOverFrameID = null , this . _onOutFrameName = null , this . _onOutFrameID = null , this . _onDownFrameName = null , this . _onDownFrameID = null , this . _onUpFrameName = null , this . _onUpFrameID = null } , b . Button . prototype . setFrames = function ( a , b , c , d ) { this . clearFrames ( ) , null !== a && ( "string" == typeof a ? ( this . _onOverFrameName = a , this . input . pointerOver ( ) && ( this . frameName = a ) ) : ( this . _onOverFrameID = a , this . input . pointerOver ( ) && ( this . frame = a ) ) ) , null !== b && ( "string" == typeof b ? ( this . _onOutFrameName = b , this . input . pointerOver ( ) === ! 1 && ( this . frameName = b ) ) : ( this . _onOutFrameID = b , this . input . pointerOver ( ) === ! 1 && ( this . frame = b ) ) ) , null !== c && ( "string" == typeof c ? ( this . _onDownFrameName = c , this . input . pointerDown ( ) && ( this . frameName = c ) ) : ( this . _onDownFrameID = c , this . input . pointerDown ( ) && ( this . frame = c ) ) ) , null !== d && ( "string" == typeof d ? ( this . _onUpFrameName = d , this . input . pointerUp ( ) && ( this . frameName = d ) ) : ( this . _onUpFrameID = d , this . input . pointerUp ( ) && ( this . frame = d ) ) ) } , b . Button . prototype . setSounds = function ( a , b , c , d , e , f , g , h ) { this . setOverSound ( a , b ) , this . setOutSound ( e , f ) , this . setDownSound ( c , d ) , this . setUpSound ( g , h ) } , b . Button . prototype . setOverSound = function ( a , c ) { this . onOverSound = null , this . onOverSoundMarker = "" , a instanceof b . Sound && ( this . onOverSound = a ) , "string" == typeof c && ( this . onOverSoundMarker = c ) } , b . Button . prototype . setOutSound = function ( a , c ) { this . onOutSound = null , this . onOutSoundMarker = "" , a instanceof b . Sound && ( this . onOutSound = a ) , "string" == typeof c && ( this . onOutSoundMarker = c ) } , b . Button . prototype . setDownSound = function ( a , c ) { this . onDownSound = null , this . onDownSoundMarker = "" , a instanceof b . Sound && ( this . onDownSound = a ) , "string" == typeof c && ( this . onDownSoundMarker = c ) } , b . Button . prototype . setUpSound = function ( a , c ) { this . onUpSound = null , this . onUpSoundMarker = "" , a instanceof b . Sound && ( this . onUpSound = a ) , "string" == typeof c && ( this . onUpSoundMarker = c ) } , b . Button . prototype . onInputOverHandler = function ( a , b ) { this . freezeFrames === ! 1 && this . setState ( 1 ) , ( ! this . onOverMouseOnly || b . isMouse ) && ( this . onOverSound && this . onOverSound . play ( this . onOverSoundMarker ) , this . onInputOver && this . onInputOver . dispatch ( this , b ) ) } , b . Button . prototype . onInputOutHandler = function ( a , b ) { this . freezeFrames === ! 1 && this . setState ( 2 ) , this . onOutSound && this . onOutSound . play ( this . onOutSoundMarker ) , this . onInputOut && this . onInputOut .
} , shuffleArray : 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 } , distance : function ( a , b , c , d ) { var e = a - c , f = b - d ; return Math . sqrt ( e * e + f * f ) } , distancePow : function ( a , b , c , d , e ) { return "undefined" == typeof e && ( e = 2 ) , Math . sqrt ( Math . pow ( c - a , e ) + Math . pow ( d - b , e ) ) } , distanceRounded : function ( a , c , d , e ) { return Math . round ( b . Math . distance ( a , c , d , e ) ) } , clamp : function ( a , b , c ) { return b > a ? b : a > c ? c : a } , clampBottom : function ( a , b ) { return b > a ? b : a } , within : function ( a , b , c ) { return Math . abs ( a - b ) <= c } , mapLinear : function ( a , b , c , d , e ) { return d + ( a - b ) * ( e - d ) / ( c - b ) } , smoothstep : function ( a , b , c ) { return a = Math . max ( 0 , Math . min ( 1 , ( a - b ) / ( c - b ) ) ) , a * a * ( 3 - 2 * a ) } , smootherstep : function ( a , b , c ) { return a = Math . max ( 0 , Math . min ( 1 , ( a - b ) / ( c - b ) ) ) , a * a * a * ( a * ( 6 * a - 15 ) + 10 ) } , sign : function ( a ) { return 0 > a ? - 1 : a > 0 ? 1 : 0 } , percent : function ( a , b , c ) { return "undefined" == typeof c && ( c = 0 ) , a > b || c > b ? 1 : c > a || c > a ? 0 : ( a - c ) / b } , degToRad : function ( ) { var a = Math . PI / 180 ; return function ( b ) { return b * a } } ( ) , radToDeg : function ( ) { var a = 180 / Math . PI ; return function ( b ) { return b * a } } ( ) } , b . RandomDataGenerator = function ( a ) { "undefined" == typeof a && ( a = [ ] ) , this . c = 1 , this . s0 = 0 , this . s1 = 0 , this . s2 = 0 , this . sow ( a ) } , b . RandomDataGenerator . prototype = { rnd : function ( ) { var a = 2091639 * this . s0 + 2.3283064365386963 e - 10 * this . c ; return this . c = 0 | a , this . s0 = this . s1 , this . s1 = this . s2 , this . s2 = a - this . c , this . s2 } , sow : function ( a ) { "undefined" == typeof a && ( a = [ ] ) , this . s0 = this . hash ( " " ) , this . s1 = this . hash ( this . s0 ) , this . s2 = this . hash ( this . s1 ) , this . c = 1 ; for ( var b , c = 0 ; b = a [ c ++ ] ; ) this . s0 -= this . hash ( b ) , this . s0 += ~ ~ ( this . s0 < 0 ) , this . s1 -= this . hash ( b ) , this . s1 += ~ ~ ( this . s1 < 0 ) , this . s2 -= this . hash ( b ) , this . s2 += ~ ~ ( this . s2 < 0 ) } , hash : function ( a ) { var b , c , d ; for ( d = 4022871197 , a = a . toString ( ) , c = 0 ; c < a . length ; c ++ ) d += a . charCodeAt ( c ) , b = . 02519603282416938 * d , d = b >>> 0 , b -= d , b *= d , d = b >>> 0 , b -= d , d += 4294967296 * b ; return 2.3283064365386963 e - 10 * ( d >>> 0 ) } , integer : function ( ) { return 4294967296 * this . rnd . apply ( this ) } , frac : function ( ) { return this . rnd . apply ( this ) + 1.1102230246251565 e - 16 * ( 2097152 * this . rnd . apply ( this ) | 0 ) } , real : function ( ) { return this . integer ( ) + this . frac ( ) } , integerInRange : function ( a , b ) { return Math . floor ( this . realInRange ( 0 , b - a + 1 ) + a ) } , between : function ( a , b ) { return this . integerInRange ( a , b ) } , realInRange : function ( a , b ) { return this . frac ( ) * ( b - a ) + a } , normal : function ( ) { return 1 - 2 * this . frac ( ) } , uuid : function ( ) { var a = "" , b = "" ; for ( b = a = "" ; a ++ < 36 ; b += ~ a % 5 | 3 * a & 4 ? ( 15 ^ a ? 8 ^ this . frac ( ) * ( 20 ^ a ? 16 : 4 ) : 4 ) . toString ( 16 ) : "-" ) ; return b } , pick : function ( a ) { return a [ this . integerInRange ( 0 , a . length - 1 ) ] } , weightedPick : function ( a ) { return a [ ~ ~ ( Math . pow ( this . frac ( ) , 2 ) * ( a . length - 1 ) ) ] } , timestamp : function ( a , b ) { return this . realInRange ( a || 9466848e5 , b || 1577862e6 ) } , angle : function ( ) { return this . integerInRange ( - 180 , 180 ) } } , b . RandomDataGenerator . prototype . constructor = b . RandomDataGenerator , b . QuadTree = function ( a , b , c , d , e , f , g ) { this . maxObjects = 10 , this . maxLevels = 4 , this . level = 0 , this . bounds = { } , this . objects = [ ] , this . nodes = [ ] , this . _empty = [ ] , this . reset ( a , b , c , d , e , f , g ) } , b . QuadTree . prototype = { reset : function ( a , b , c , d , e , f , g ) { this . maxObjects = e || 10 , this . maxLevels = f || 4 , this . level = g || 0 , this . bounds = { x : Math . round ( a ) , y : Math . round ( b ) , width : c , height : d , subWidth : Math . floor ( c / 2 ) , subHeight : Math . floor ( d / 2 ) , right : Math . round ( a ) + Math . floor ( c / 2 ) , bottom : Math . round ( b ) + Math . floor ( d / 2 ) } , this . objects . length = 0 , this . nodes . length = 0 } , populate : function ( a ) { a . forEach ( this . populateHandler , this , ! 0 ) } , populateHandler : function ( a ) { a . body && a . exists && this . insert ( a . body ) } , split : function ( ) { this . nodes [ 0 ] = new b . QuadTree ( this . bounds . right , this . bounds . y , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level + 1 ) , this . nodes [ 1 ] = new b . QuadTree ( this . bounds . x , this . bounds . y , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level + 1 ) , this . nodes [ 2 ] = new b . QuadTree ( this . bounds . x , this . bounds . bottom , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level + 1 ) , this . nodes [ 3 ] = new b . QuadTree ( this . bounds . right , this . bounds . bottom , this . bounds . subWidth , this . bounds . subHeight , this . maxObjects , this . maxLevels , this . level + 1 ) } , insert : function ( a ) { var b , c = 0 ; if ( null != this . nodes [ 0 ] && ( b = this . getIndex ( a ) , - 1 !== b ) ) return void this . nodes [ b ] . ins
2014-08-28 04:24:57 +00:00
else for ( var i = c ; i >= d ; i -- ) h = "number" == typeof f ? b . Utils . pad ( i . toString ( ) , f , "0" , 1 ) : i . toString ( ) , h = a + h + e , g . push ( h ) ; return g } , b . Frame = function ( a , c , d , e , f , g , h ) { this . index = a , this . x = c , this . y = d , this . width = e , this . height = f , this . name = g , this . uuid = h , this . centerX = Math . floor ( e / 2 ) , this . centerY = Math . floor ( f / 2 ) , this . distance = b . Math . distance ( 0 , 0 , e , f ) , this . rotated = ! 1 , this . rotationDirection = "cw" , this . trimmed = ! 1 , this . sourceSizeW = e , this . sourceSizeH = f , this . spriteSourceSizeX = 0 , this . spriteSourceSizeY = 0 , this . spriteSourceSizeW = 0 , this . spriteSourceSizeH = 0 , this . right = this . x + this . width , this . bottom = this . y + this . height } , b . Frame . prototype = { setTrim : function ( a , b , c , d , e , f , g ) { this . trimmed = a , a && ( this . sourceSizeW = b , this . sourceSizeH = c , this . centerX = Math . floor ( b / 2 ) , this . centerY = Math . floor ( c / 2 ) , this . spriteSourceSizeX = d , this . spriteSourceSizeY = e , this . spriteSourceSizeW = f , this . spriteSourceSizeH = g ) } , getRect : function ( a ) { return "undefined" == typeof a ? a = new b . Rectangle ( this . x , this . y , this . width , this . height ) : a . setTo ( this . x , this . y , this . width , this . height ) , a } } , b . Frame . prototype . constructor = b . Frame , b . FrameData = function ( ) { this . _frames = [ ] , this . _frameNames = [ ] } , b . FrameData . prototype = { addFrame : function ( a ) { return a . index = this . _frames . length , this . _frames . push ( a ) , "" !== a . name && ( this . _frameNames [ a . name ] = a . index ) , a } , getFrame : function ( a ) { return a > this . _frames . length && ( a = 0 ) , this . _frames [ a ] } , getFrameByName : function ( a ) { return "number" == typeof this . _frameNames [ a ] ? this . _frames [ this . _frameNames [ a ] ] : null } , checkFrameName : function ( a ) { return null == this . _frameNames [ a ] ? ! 1 : ! 0 } , getFrameRange : function ( a , b , c ) { "undefined" == typeof c && ( c = [ ] ) ; for ( var d = a ; b >= d ; d ++ ) c . push ( this . _frames [ d ] ) ; return c } , getFrames : function ( a , b , c ) { if ( "undefined" == typeof b && ( b = ! 0 ) , "undefined" == typeof c && ( c = [ ] ) , "undefined" == typeof a || 0 === a . length ) for ( var d = 0 ; d < this . _frames . length ; d ++ ) c . push ( this . _frames [ d ] ) ; else for ( var d = 0 , e = a . length ; e > d ; d ++ ) c . push ( b ? this . getFrame ( a [ d ] ) : this . getFrameByName ( a [ d ] ) ) ; return c } , getFrameIndexes : function ( a , b , c ) { if ( "undefined" == typeof b && ( b = ! 0 ) , "undefined" == typeof c && ( c = [ ] ) , "undefined" == typeof a || 0 === a . length ) for ( var d = 0 , e = this . _frames . length ; e > d ; d ++ ) c . push ( this . _frames [ d ] . index ) ; else for ( var d = 0 , e = a . length ; e > d ; d ++ ) b ? c . push ( a [ d ] ) : this . getFrameByName ( a [ d ] ) && c . push ( this . getFrameByName ( a [ d ] ) . index ) ; return c } } , b . FrameData . prototype . constructor = b . FrameData , Object . defineProperty ( b . FrameData . prototype , "total" , { get : function ( ) { return this . _frames . length } } ) , b . AnimationParser = { spriteSheet : function ( a , c , d , e , f , g , h ) { var i = a . cache . getImage ( c ) ; if ( null == i ) return null ; var j = i . width , k = i . height ; 0 >= d && ( d = Math . floor ( - j / Math . min ( - 1 , d ) ) ) , 0 >= e && ( e = Math . floor ( - k / Math . min ( - 1 , e ) ) ) ; var l = Math . floor ( ( j - g ) / ( d + h ) ) , m = Math . floor ( ( k - g ) / ( e + h ) ) , n = l * m ; if ( - 1 !== f && ( n = f ) , 0 === j || 0 === k || d > j || e > k || 0 === n ) return console . warn ( "Phaser.AnimationParser.spriteSheet: '" + c + "'s width/height zero or width/height < given frameWidth/frameHeight" ) , null ; for ( var o = new b . FrameData , p = g , q = g , r = 0 ; n > r ; r ++ ) { var s = a . rnd . uuid ( ) ; o . addFrame ( new b . Frame ( r , p , q , d , e , "" , s ) ) , PIXI . TextureCache [ s ] = new PIXI . Texture ( PIXI . BaseTextureCache [ c ] , { x : p , y : q , width : d , height : e } ) , p += d + h , p + d > j && ( p = g , q += e + h ) } return o } , JSONData : function ( a , c , d ) { if ( ! c . frames ) return console . warn ( "Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array" ) , void console . log ( c ) ; for ( var e , f = new b . FrameData , g = c . frames , h = 0 ; h < g . length ; h ++ ) { var i = a . rnd . uuid ( ) ; e = f . addFrame ( new b . Frame ( h , g [ h ] . frame . x , g [ h ] . frame . y , g [ h ] . frame . w , g [ h ] . frame . h , g [ h ] . filename , i ) ) , PIXI . TextureCache [ i ] = new PIXI . Texture ( PIXI . BaseTextureCache [ d ] , { x : g [ h ] . frame . x , y : g [ h ] . frame . y , width : g [ h ] . frame . w , height : g [ h ] . frame . h } ) , g [ h ] . trimmed && e . setTrim ( g [ h ] . trimmed , g [ h ] . sourceSize . w , g [ h ] . sourceSize . h , g [ h ] . spriteSourceSize . x , g [ h ] . spriteSourceSize . y , g [ h ] . spriteSourceSize . w , g [ h ] . spriteSourceSize . h ) } return f } , JSONDataHash : function ( a , c , d ) { if ( ! c . frames ) return console . warn ( "Phaser.AnimationParser.JSONDataHash: Invalid Texture Atlas JSON given, missing 'frames' object" ) , void console . log ( c ) ; var e , f = new b . FrameData , g = c . frames , h = 0 ; for ( var i in g ) { var j = a . rnd . uuid ( ) ; e = f . addFrame ( new b . Frame ( h , g [ i ] . frame . x , g [ i ] . frame . y , g [ i ] . frame . w , g [ i ] . frame . h , i , j ) ) , PIXI . Textur
2014-08-28 03:53:05 +00:00
} , totalLoadedFiles : function ( ) { for ( var a = 0 , b = 0 ; b < this . _fileList . length ; b ++ ) this . _fileList [ b ] . loaded && a ++ ; return a } , totalQueuedFiles : function ( ) { for ( var a = 0 , b = 0 ; b < this . _fileList . length ; b ++ ) this . _fileList [ b ] . loaded === ! 1 && a ++ ; return a } , totalLoadedPacks : function ( ) { for ( var a = 0 , b = 0 ; b < this . _packList . length ; b ++ ) this . _packList [ b ] . loaded && a ++ ; return a } , totalQueuedPacks : function ( ) { for ( var a = 0 , b = 0 ; b < this . _packList . length ; b ++ ) this . _packList [ b ] . loaded === ! 1 && a ++ ; return a } } , b . Loader . prototype . constructor = b . Loader , b . LoaderParser = { bitmapFont : function ( a , b , c , d , e ) { var f = { } , g = b . getElementsByTagName ( "info" ) [ 0 ] , h = b . getElementsByTagName ( "common" ) [ 0 ] ; f . font = g . getAttribute ( "face" ) , f . size = parseInt ( g . getAttribute ( "size" ) , 10 ) , f . lineHeight = parseInt ( h . getAttribute ( "lineHeight" ) , 10 ) + e , f . chars = { } ; for ( var i = b . getElementsByTagName ( "char" ) , j = 0 ; j < i . length ; j ++ ) { var k = parseInt ( i [ j ] . getAttribute ( "id" ) , 10 ) , l = new PIXI . Rectangle ( parseInt ( i [ j ] . getAttribute ( "x" ) , 10 ) , parseInt ( i [ j ] . getAttribute ( "y" ) , 10 ) , parseInt ( i [ j ] . getAttribute ( "width" ) , 10 ) , parseInt ( i [ j ] . getAttribute ( "height" ) , 10 ) ) ; f . chars [ k ] = { xOffset : parseInt ( i [ j ] . getAttribute ( "xoffset" ) , 10 ) , yOffset : parseInt ( i [ j ] . getAttribute ( "yoffset" ) , 10 ) , xAdvance : parseInt ( i [ j ] . getAttribute ( "xadvance" ) , 10 ) + d , kerning : { } , texture : PIXI . TextureCache [ c ] = new PIXI . Texture ( PIXI . BaseTextureCache [ c ] , l ) } } var m = b . getElementsByTagName ( "kerning" ) ; for ( j = 0 ; j < m . length ; j ++ ) { var n = parseInt ( m [ j ] . getAttribute ( "first" ) , 10 ) , o = parseInt ( m [ j ] . getAttribute ( "second" ) , 10 ) , p = parseInt ( m [ j ] . getAttribute ( "amount" ) , 10 ) ; f . chars [ o ] . kerning [ n ] = p } PIXI . BitmapText . fonts [ c ] = f } } , b . Sound = function ( a , c , d , e , f ) { "undefined" == typeof d && ( d = 1 ) , "undefined" == typeof e && ( e = ! 1 ) , "undefined" == typeof f && ( f = a . sound . connectToMaster ) , this . game = a , this . name = c , this . key = c , this . loop = e , this . volume = d , this . markers = { } , this . context = null , this . autoplay = ! 1 , this . totalDuration = 0 , this . startTime = 0 , this . currentTime = 0 , this . duration = 0 , this . durationMS = 0 , this . position = 0 , this . stopTime = 0 , this . paused = ! 1 , this . pausedPosition = 0 , this . pausedTime = 0 , this . isPlaying = ! 1 , this . currentMarker = "" , this . pendingPlayback = ! 1 , this . override = ! 1 , this . usingWebAudio = this . game . sound . usingWebAudio , this . usingAudioTag = this . game . sound . usingAudioTag , this . externalNode = null , this . masterGainNode = null , this . gainNode = null , this . usingWebAudio ? ( this . context = this . game . sound . context , this . masterGainNode = this . game . sound . masterGain , this . gainNode = "undefined" == typeof this . context . createGain ? this . context . createGainNode ( ) : this . context . createGain ( ) , this . gainNode . gain . value = d * this . game . sound . volume , f && this . gainNode . connect ( this . masterGainNode ) ) : this . game . cache . getSound ( c ) && this . game . cache . isSoundReady ( c ) ? ( this . _sound = this . game . cache . getSoundData ( c ) , this . totalDuration = 0 , this . _sound . duration && ( this . totalDuration = this . _sound . duration ) ) : this . game . cache . onSoundUnlock . add ( this . soundHasUnlocked , this ) , this . onDecoded = new b . Signal , this . onPlay = new b . Signal , this . onPause = new b . Signal , this . onResume = new b . Signal , this . onLoop = new b . Signal , this . onStop = new b . Signal , this . onMute = new b . Signal , this . onMarkerComplete = new b . Signal , this . _volume = d , this . _buffer = null , this . _muted = ! 1 , this . _tempMarker = 0 , this . _tempPosition = 0 , this . _tempVolume = 0 , this . _tempLoop = 0 , this . _paused = ! 1 , this . _onDecodedEventDispatched = ! 1 } , b . Sound . prototype = { soundHasUnlocked : function ( a ) { a == this . key && ( this . _sound = this . game . cache . getSoundData ( this . key ) , this . totalDuration = this . _sound . duration ) } , addMarker : function ( a , b , c , d , e ) { "undefined" == typeof d && ( d = 1 ) , "undefined" == typeof e && ( e = ! 1 ) , this . markers [ a ] = { name : a , start : b , stop : b + c , volume : d , duration : c , durationMS : 1e3 * c , loop : e } } , removeMarker : function ( a ) { delete this . markers [ a ] } , update : function ( ) { this . isDecoded && ! this . _onDecodedEventDispatched && ( this . onDecoded . dispatch ( this ) , this . _onDecodedEventDispatched = ! 0 ) , this . pendingPlayback && this . game . cache . isSoundReady ( this . key ) && ( this . pendingPlayback = ! 1 , this . play ( this . _tempMarker , this . _tempPosition , this . _tempVolume , this . _tempLoop ) ) , this . isPlaying && ( this . currentTime = this . game . time . now - this . startTime , this . currentTime >= this . durationMS && ( this . usingWebAudio ? this . loop ? ( this . onLoop . dispatch ( this ) , "" === this . currentMarker ? ( this . currentTime = 0 , this . startTime = this . game
} , updateMotion : function ( a ) { this . _velocityDelta = this . computeVelocity ( 0 , a , a . angularVelocity , a . angularAcceleration , a . angularDrag , a . maxAngular ) - a . angularVelocity , a . angularVelocity += this . _velocityDelta , a . rotation += a . angularVelocity * this . game . time . physicsElapsed , a . velocity . x = this . computeVelocity ( 1 , a , a . velocity . x , a . acceleration . x , a . drag . x , a . maxVelocity . x ) , a . velocity . y = this . computeVelocity ( 2 , a , a . velocity . y , a . acceleration . y , a . drag . y , a . maxVelocity . y ) } , computeVelocity : function ( a , b , c , d , e , f ) { return f = f || 1e4 , 1 == a && b . allowGravity ? c += ( this . gravity . x + b . gravity . x ) * this . game . time . physicsElapsed : 2 == a && b . allowGravity && ( c += ( this . gravity . y + b . gravity . y ) * this . game . time . physicsElapsed ) , d ? c += d * this . game . time . physicsElapsed : e && ( this . _drag = e * this . game . time . physicsElapsed , c - this . _drag > 0 ? c -= this . _drag : c + this . _drag < 0 ? c += this . _drag : c = 0 ) , c > f ? c = f : - f > c && ( c = - f ) , c } , overlap : function ( a , b , c , d , e ) { if ( c = c || null , d = d || null , e = e || c , this . _result = ! 1 , this . _total = 0 , Array . isArray ( b ) ) for ( var f = 0 , g = b . length ; g > f ; f ++ ) this . collideHandler ( a , b [ f ] , 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 ( b ) ) for ( var f = 0 , g = b . length ; g > f ; f ++ ) this . collideHandler ( a , b [ f ] , c , d , e , ! 1 ) ; else this . collideHandler ( a , b , c , d , e , ! 1 ) ; return this . _total > 0 } , collideHandler : function ( a , c , d , e , f , g ) { return "undefined" != typeof c || a . type !== b . GROUP && a . type !== b . EMITTER ? void ( a && c && a . exists && c . exists && ( a . type == b . SPRITE || a . type == b . TILESPRITE ? c . type == b . SPRITE || c . type == b . TILESPRITE ? this . collideSpriteVsSprite ( a , c , d , e , f , g ) : c . type == b . GROUP || c . type == b . EMITTER ? this . collideSpriteVsGroup ( a , c , d , e , f , g ) : c . type == b . TILEMAPLAYER && this . collideSpriteVsTilemapLayer ( a , c , d , e , f ) : a . type == b . GROUP ? c . type == b . SPRITE || c . type == b . TILESPRITE ? this . collideSpriteVsGroup ( c , a , d , e , f , g ) : c . type == b . GROUP || c . type == b . EMITTER ? this . collideGroupVsGroup ( a , c , d , e , f , g ) : c . type == b . TILEMAPLAYER && this . collideGroupVsTilemapLayer ( a , c , d , e , f ) : a . type == b . TILEMAPLAYER ? c . type == b . SPRITE || c . type == b . TILESPRITE ? this . collideSpriteVsTilemapLayer ( c , a , d , e , f ) : ( c . type == b . GROUP || c . type == b . EMITTER ) && this . collideGroupVsTilemapLayer ( c , a , d , e , f ) : a . type == b . EMITTER && ( c . type == b . SPRITE || c . type == b . TILESPRITE ? this . collideSpriteVsGroup ( c , a , d , e , f , g ) : c . type == b . GROUP || c . type == b . EMITTER ? this . collideGroupVsGroup ( a , c , d , e , f , g ) : c . type == b . TILEMAPLAYER && this . collideGroupVsTilemapLayer ( a , c , 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 > 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 , c , d , e , f ) { if ( 0 !== a . length && 0 !== b . length ) for ( var g = 0 , h = a . children . length ; h > g ; g ++ ) a . children [ g ] . exists && this . collideSpriteVsGroup ( a . children [ g ] , b , c , d , e , f ) } , 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 .
var h = b . TilemapParser . parse ( this . game , c , d , e , f , g ) ; null !== h && ( this . width = h . width , this . height = h . height , this . tileWidth = h . tileWidth , this . tileHeight = h . tileHeight , this . orientation = h . orientation , this . format = h . format , this . version = h . version , this . properties = h . properties , this . widthInPixels = h . widthInPixels , this . heightInPixels = h . heightInPixels , this . layers = h . layers , this . tilesets = h . tilesets , this . tiles = h . tiles , this . objects = h . objects , this . collideIndexes = [ ] , this . collision = h . collision , this . images = h . images , this . currentLayer = 0 , this . debugMap = [ ] , this . _results = [ ] , this . _tempA = 0 , this . _tempB = 0 ) } , b . Tilemap . CSV = 0 , b . Tilemap . TILED _JSON = 1 , b . Tilemap . NORTH = 0 , b . Tilemap . EAST = 1 , b . Tilemap . SOUTH = 2 , b . Tilemap . WEST = 3 , b . 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 , c , 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 c ) { if ( "string" != typeof a ) return null ; if ( c = a , ! this . game . cache . checkImageKey ( c ) ) return console . warn ( 'Phaser.Tilemap.addTilesetImage: Invalid image key given: "' + c + '"' ) , null } if ( "string" == typeof a && ( a = this . getTilesetIndex ( a ) , null === a && this . format === b . Tilemap . TILED _JSON ) ) return console . warn ( 'Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "' + c + '"' ) , null ; if ( this . tilesets [ a ] ) return this . tilesets [ a ] . setImage ( this . game . cache . getImage ( c ) ) , this . tilesets [ a ] ; var i = new b . Tileset ( c , h , d , e , f , g , { } ) ; i . setImage ( this . game . cache . getImage ( c ) ) , 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 , c , 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 = b . 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 === c ) { 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 ) } } , createLayer : function ( a , c , d , e ) { "undefined" == typeof c && ( c = 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 b . TilemapLayer ( this . game , this , f , c , d ) ) } , createBlankLayer : function ( a , c , 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 : c , height : d , widthInPixels : c * 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 ; c > l ; l ++ ) h . push ( new b . 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 b . 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 . length ; c ++ ) if ( a [ c ] . name === b ) return c ; return null } , getLayerIndex : function ( a ) { return this . getIndex ( this . layers , a ) } , getTilesetIndex : function ( a ) { return this . getIndex ( this . tilesets , a ) } , getImageIndex : function ( a ) { return