!function(t,i,e){var r=(e.un,e.uns,e["static"],e["class"]),h=e.getset,a=(e.__newvec,laya.utils.Browser),s=(laya.utils.Handler,laya.net.Loader),o=laya.maths.Point,l=laya.maths.Rectangle,n=laya.renders.Render,_=laya.display.Sprite,p=laya.resource.Texture,m=function(){function t(){this._jsonData=null,this._tileTexSetArr=[],this._texArray=[],this._x=0,this._y=0,this._width=0,this._height=0,this._mapW=0,this._mapH=0,this._mapTileW=0,this._mapTileH=0,this._mapSprite=null,this._layerArray=[],this._gridArray=[],this._showGridKey=!1,this._totalGridNum=0,this._gridW=0,this._gridH=0,this._gridWidth=450,this._gridHeight=450,this._jsonLoader=null,this._loader=null,this._tileSetArray=[],this._currTileSet=null,this._completeHandler=null,this._index=0,this._animationDic={},this._properties=null,this._tileProperties={},this._orientation="orthogonal",this._renderOrder="right-down",this._colorArray=["FF","00","33","66"],this._scale=1,this._pivotScaleX=.5,this._pivotScaleY=.5,this._centerX=0,this._centerY=0,this._viewPortX=0,this._viewPortY=0,this._viewPortWidth=0,this._viewPortHeight=0,this._enableLinear=!0,this._resPath=null,this._pathArray=null,this._limitRange=!1,this._rect=new l,this._paddingRect=new l,this._mapRect=new i,this._mapLastRect=new i}var i,a,o;r(t,"laya.map.TiledMap");var m=t.prototype;return m.createMap=function(t,i,e,r,h,a,o){void 0===a&&(a=!0),void 0===o&&(o=!1),this._enableLinear=a,this._limitRange=o,this._rect.x=i.x,this._rect.y=i.y,this._rect.width=i.width,this._rect.height=i.height,this._viewPortWidth=i.width/this._scale,this._viewPortHeight=i.height/this._scale,this._completeHandler=e,r?this._paddingRect.copyFrom(r):this._paddingRect.setTo(0,0,0,0),h&&(this._gridWidth=h.x,this._gridHeight=h.y);var l=t.lastIndexOf("/");l>-1?(this._resPath=t.substr(0,l),this._pathArray=this._resPath.split("/")):(this._resPath="",this._pathArray=[]),this._jsonLoader=new s,this._jsonLoader.once("complete",this,this.onJsonComplete),this._jsonLoader.load(t,"json",!1)},m.onJsonComplete=function(t){this._mapSprite=new _,e.stage.addChild(this._mapSprite);var i=this._jsonData=t;this._properties=i.properties,this._orientation=i.orientation,this._renderOrder=i.renderorder,this._mapW=i.width,this._mapH=i.height,this._mapTileW=i.tilewidth,this._mapTileH=i.tileheight,this._width=this._mapTileW*this._mapW,this._height=this._mapTileH*this._mapH,this._mapLastRect.top=this._mapLastRect.bottom=this._mapLastRect.left=this._mapLastRect.right=-1;var r,h,l=i.tilesets,n=0;for(n=0;n0){h=this._currTileSet=this._tileSetArray.shift(),this._loader=new s,this._loader.once("complete",this,this.onTextureComplete);var f=this.mergePath(this._resPath,h.image);this._loader.load(f,"image",!1)}},m.mergePath=function(t,i){var e="",r=i.split("/"),h=0,a=0;for(a=r.length-1;a>=0;a--)".."==r[a]&&h++;if(0==h)return e=this._pathArray.length>0?t+"/"+i:i;var s=this._pathArray.length-h;for(0>s&&console.log("[error]path does not exist"),a=0;s>a;a++)0==a?e+=this._pathArray[a]:e=e+"/"+this._pathArray[a];for(a=h;am;m++)for(var c=0;o>c;c++)_=new d,_.offX=e.titleoffsetX,_.offY=e.titleoffsetY-(h-this._mapTileH),_.texture=p.create(i,e.margin+(r+e.spacing)*c,e.margin+(h+e.spacing)*m,r,h),this._tileTexSetArr.push(_),_.gid=this._tileTexSetArr.length;if(this._tileSetArray.length>0){e=this._currTileSet=this._tileSetArray.shift(),this._loader.once("complete",this,this.onTextureComplete);var u=this.mergePath(this._resPath,e.image);this._loader.load(u,"image",!1)}else this._currTileSet=null,this.initMap()},m.initMap=function(){var t=0,i=0;for(var e in this._animationDic){var r=this.getTexture(parseInt(e)+1),h=this._animationDic[e];if(h.mAniIdArray.length>0){for(r.textureArray=[],r.durationTimeArray=h.mDurationTimeArray,r.isAnimation=!0,r.animationTotalTime=0,t=0,i=r.durationTimeArray.length;i>t;t++)r.animationTotalTime+=r.durationTimeArray[t];for(t=0,i=h.mAniIdArray.length;i>t;t++){var a=this.getTexture(h.mAniIdArray[t]+1);r.textureArray.push(a)}}}for(this._gridWidth=Math.floor(this._gridWidth/this._mapTileW)*this._mapTileW,this._gridHeight=Math.floor(this._gridHeight/this._mapTileH)*this._mapTileH,this._gridWidththis._width&&(this._viewPortX=this._width-this._viewPortWidth);var i=this._viewPortY+this._viewPortHeight;i>this._height&&(this._viewPortY=this._height-this._viewPortHeight),this._viewPortX<0&&(this._viewPortX=0),this._viewPortY<0&&(this._viewPortY=0)}var e=this._paddingRect;this._mapRect.top=Math.floor((this._viewPortY-e.y)/this._gridHeight),this._mapRect.bottom=Math.floor((this._viewPortY+this._viewPortHeight+e.height+e.y)/this._gridHeight),this._mapRect.left=Math.floor((this._viewPortX-e.x)/this._gridWidth),this._mapRect.right=Math.floor((this._viewPortX+this._viewPortWidth+e.width+e.x)/this._gridWidth),this.clipViewPort(),this._mapLastRect.top=this._mapRect.top,this._mapLastRect.bottom=this._mapRect.bottom,this._mapLastRect.left=this._mapRect.left,this._mapLastRect.right=this._mapRect.right;for(var r,h=0;hthis._mapLastRect.left){if(t=this._mapRect.left-this._mapLastRect.left,t>0)for(r=this._mapLastRect.left;r0)for(r=this._mapRect.left;rthis._mapLastRect.right){if(i=this._mapRect.right-this._mapLastRect.right,i>0)for(r=this._mapLastRect.right+1;r<=this._mapLastRect.right+i;r++)for(e=this._mapRect.top;e<=this._mapRect.bottom;e++)this.showGrid(r,e)}else if(t=this._mapLastRect.right-this._mapRect.right,t>0)for(r=this._mapRect.right+1;r<=this._mapRect.right+t;r++)for(e=this._mapLastRect.top;e<=this._mapLastRect.bottom;e++)this.hideGrid(r,e);if(this._mapRect.top>this._mapLastRect.top){if(t=this._mapRect.top-this._mapLastRect.top,t>0)for(e=this._mapLastRect.top;e0)for(e=this._mapRect.top;ethis._mapLastRect.bottom){if(i=this._mapRect.bottom-this._mapLastRect.bottom,i>0)for(e=this._mapLastRect.bottom+1;e<=this._mapLastRect.bottom+i;e++)for(r=this._mapRect.left;r<=this._mapRect.right;r++)this.showGrid(r,e)}else if(t=this._mapLastRect.bottom-this._mapRect.bottom,t>0)for(e=this._mapRect.bottom+1;e<=this._mapRect.bottom+t;e++)for(r=this._mapLastRect.left;r<=this._mapLastRect.right;r++)this.hideGrid(r,e)},m.showGrid=function(t,i){if(!(0>t||t>=this._gridW||0>i||i>=this._gridH)){var e,r=0,h=0,a=this._gridArray[i][t];if(null==a){a=this._gridArray[i][t]=[];var s=0,o=0,l=0,n=0,_=this._gridWidth,p=this._gridHeight;switch(this.orientation){case"isometric":s=Math.floor(t*_),o=Math.floor(t*_+_),l=Math.floor(i*p),n=Math.floor(i*p+p);var m=0,d=0,c=0,u=0;break;case"staggered":s=Math.floor(t*_/this._mapTileW),o=Math.floor((t*_+_)/this._mapTileW),l=Math.floor(i*p/(this._mapTileH/2)),n=Math.floor((i*p+p)/(this._mapTileH/2));break;case"orthogonal":s=Math.floor(t*_/this._mapTileW),o=Math.floor((t*_+_)/this._mapTileW),l=Math.floor(i*p/this._mapTileH),n=Math.floor((i*p+p)/this._mapTileH);break;case"hexagonal":var g=2*this._mapTileH/3;s=Math.floor(t*_/this._mapTileW),o=Math.ceil((t*_+_)/this._mapTileW),l=Math.floor(i*p/g),n=Math.ceil((i*p+p)/g)}for(var f=null,y=0;yc&&(c=0),c>=x&&(c=x-1),0>u&&(n=0),u>=x&&(u=x-1),e.zOrder=this._totalGridNum*y+i*this._gridW+t,r=c;u>r;r++)for(h=0;r>=h;h++){var H=r-h,R=h,S=H-R+this._mapW;S>m&&d>=S&&f.drawTileTexture(e,H,R)&&e.drawImageNum++}break;case"staggered":for(e.zOrder=y*this._totalGridNum+i*this._gridW+t,r=l;n>r;r++)for(h=s;o>h;h++)f.drawTileTexture(e,h,r)&&e.drawImageNum++;break;case"orthogonal":case"hexagonal":switch(this._renderOrder){case"right-down":for(e.zOrder=y*this._totalGridNum+i*this._gridW+t,r=l;n>r;r++)for(h=s;o>h;h++)f.drawTileTexture(e,h,r)&&e.drawImageNum++;break;case"right-up":for(e.zOrder=y*this._totalGridNum+(this._gridH-1-i)*this._gridW+t,r=n-1;r>=l;r--)for(h=s;o>h;h++)f.drawTileTexture(e,h,r)&&e.drawImageNum++;break;case"left-down":for(e.zOrder=y*this._totalGridNum+i*this._gridW+(this._gridW-1-t),r=l;n>r;r++)for(h=o-1;h>=s;h--)f.drawTileTexture(e,h,r)&&e.drawImageNum++;break;case"left-up":for(e.zOrder=y*this._totalGridNum+(this._gridH-1-i)*this._gridW+(this._gridW-1-t),r=n-1;r>=l;r--)for(h=o-1;h>=s;h--)f.drawTileTexture(e,h,r)&&e.drawImageNum++}}e.isHaveAnimation||(e.autoSize=!0,e.cacheAs="bitmap",e.autoSize=!1),e.drawImageNum>0&&f.addChild(e),this._showGridKey&&e.graphics.drawRect(0,0,_,p,null,v)}}else for(r=0;r0&&e.show())}}},m.hideGrid=function(t,i){if(!(0>t||t>=this._gridW||0>i||i>=this._gridH)){var e=this._gridArray[i][t];if(e)for(var r,h=0;h0&&null!=r&&r.hide()}},m.getLayerObject=function(t,i){for(var e=null,r=0;r=t||(this._scale=t,this._viewPortWidth=this._rect.width/t,this._viewPortHeight=this._rect.height/t,this._mapSprite.scale(this._scale,this._scale),this.updateViewPort())}),h(0,m,"tileWidth",function(){return this._mapTileW}),h(0,m,"viewPortY",function(){return-this._viewPortY}),h(0,m,"tileHeight",function(){return this._mapTileH}),h(0,m,"width",function(){return this._width}),h(0,m,"numRowsTile",function(){return this._mapH}),h(0,m,"numColumnsTile",function(){return this._mapW}),h(0,m,"height",function(){return this._height}),h(0,m,"viewPortWidth",function(){return this._viewPortWidth}),h(0,m,"viewPortHeight",function(){return this._viewPortHeight}),h(0,m,"x",function(){return this._x}),h(0,m,"y",function(){return this._y}),h(0,m,"gridWidth",function(){return this._gridWidth}),h(0,m,"gridHeight",function(){return this._gridHeight}),h(0,m,"numColumnsGrid",function(){return this._gridW}),h(0,m,"numRowsGrid",function(){return this._gridH}),h(0,m,"renderOrder",function(){return this._renderOrder}),t.ORIENTATION_ORTHOGONAL="orthogonal",t.ORIENTATION_ISOMETRIC="isometric",t.ORIENTATION_STAGGERED="staggered",t.ORIENTATION_HEXAGONAL="hexagonal",t.RENDERORDER_RIGHTDOWN="right-down",t.RENDERORDER_RIGHTUP="right-up",t.RENDERORDER_LEFTDOWN="left-down",t.RENDERORDER_LEFTUP="left-up",t.__init$=function(){i=function(){function t(){this.left=0,this.top=0,this.right=0,this.bottom=0}r(t,"");var i=t.prototype;return i.clearAll=function(){this.left=this.top=this.right=this.bottom=0},t}(),a=function(){function t(){this.mAniIdArray=[],this.mDurationTimeArray=[],this.mTileTexSetArr=[]}return r(t,""),t}(),o=function(){function t(){this.firstgid=0,this.image="",this.imageheight=0,this.imagewidth=0,this.margin=0,this.name=0,this.properties=null,this.spacing=0,this.tileheight=0,this.tilewidth=0,this.titleoffsetX=0,this.titleoffsetY=0,this.tileproperties=null}r(t,"");var i=t.prototype;return i.init=function(t){this.firstgid=t.firstgid,this.image=t.image,this.imageheight=t.imageheight,this.imagewidth=t.imagewidth,this.margin=t.margin,this.name=t.name,this.properties=t.properties,this.spacing=t.spacing,this.tileheight=t.tileheight,this.tilewidth=t.tilewidth,this.tileproperties=t.tileproperties;var i=t.tileoffset;i&&(this.titleoffsetX=i.x,this.titleoffsetY=i.y)},t}()},t}(),d=function(){function t(){this.gid=-1,this.texture=null,this.offX=0,this.offY=0,this.textureArray=null,this.durationTimeArray=null,this.animationTotalTime=0,this.isAnimation=!1,this._spriteNum=0,this._aniDic=null,this._frameIndex=0,this._time=0,this._interval=0,this._preFrameTime=0}r(t,"laya.map.TileTexSet");var i=t.prototype;return i.addAniSprite=function(t,i){if(0!=this.animationTotalTime&&(null==this._aniDic&&(this._aniDic={}),0==this._spriteNum&&(e.timer.frameLoop(3,this,this.animate),this._preFrameTime=a.now(),this._frameIndex=0,this._time=0,this._interval=0),this._spriteNum++,this._aniDic[t]=i,this.textureArray&&this._frameIndex0&&this.durationTimeArray&&this.durationTimeArray.length>0){var t=a.now();this._interval=t-this._preFrameTime,this._preFrameTime=t,this._interval>this.animationTotalTime&&(this._interval=this._interval%this.animationTotalTime),this._time+=this._interval;for(var i=this.durationTimeArray[this._frameIndex];this._time>i;){this._time-=i,this._frameIndex++,(this._frameIndex>=this.durationTimeArray.length||this._frameIndex>=this.textureArray.length)&&(this._frameIndex=0);var e,r=this.textureArray[this._frameIndex];for(var h in this._aniDic)e=this._aniDic[h],this.drawTexture(e,r);i=this.durationTimeArray[this._frameIndex]}}},i.drawTexture=function(t,i){t.graphics.clear(),t.graphics.drawTexture(i.texture,i.offX,i.offY,i.texture.width,i.texture.height)},i.removeAniSprite=function(t){this._aniDic&&this._aniDic[t]&&(delete this._aniDic[t],this._spriteNum--,0==this._spriteNum&&e.timer.clear(this,this.animate))},i.showDebugInfo=function(){var t=null;return this._spriteNum>0&&(t="TileTextureSet::gid:"+this.gid.toString()+" 动画数:"+this._spriteNum.toString()),t},i.clearAll=function(){this.gid=-1,this.texture&&(this.texture.destroy(),this.texture=null),this.offX=0,this.offY=0,this.textureArray=null,this.durationTimeArray=null,this.isAnimation=!1,this._spriteNum=0,this._aniDic=null,this._frameIndex=0,this._preFrameTime=0,this._time=0,this._interval=0},t}(),c=function(t){function i(){this.relativeX=0,this.relativeY=0,this.isAloneObject=!1,this.isHaveAnimation=!1,this.aniSpriteArray=null,this.drawImageNum=0,this._map=null,i.__super.call(this)}r(i,"laya.map.GridSprite",t);var e=i.prototype;return e.initData=function(t,i){void 0===i&&(i=!1),this._map=t,this.isAloneObject=i},e.addAniSprite=function(t){null==this.aniSpriteArray&&(this.aniSpriteArray=[]),this.aniSpriteArray.push(t)},e.show=function(){if(!this.visible){if(this.visible=!0,null==this.aniSpriteArray)return;for(var t,i=0;ithis._map.viewPortWidth||this.y<0||this.y>this._map.viewPortHeight?this.hide():this.show()):this._map&&(this.x=this.relativeX+this._map.viewPortX,this.y=this.relativeY+this._map.viewPortY)},e.clearAll=function(){if(this._map&&(this._map=null),this.visible=!1,null!=this.aniSpriteArray){for(var t,i=0;i0&&(this._objDic={});for(var a,s=NaN,l=NaN,n=0;n=0&&i=0&&t0&&t.updatePos()},e.drawTileTexture=function(t,i,e){if(e>=0&&e=0&&i