layaair-js
Version:
An open source HTML5 engine. Edition JavaScript.
1 lines • 26.2 kB
JavaScript
!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;n<l.length;n++){r=l[n],h=new o,h.init(r),this._tileProperties[n]=h.tileproperties,this._tileSetArray.push(h);var p=r.tiles;if(p)for(var m in p){var d=p[m].animation;if(d){var c=new a;this._animationDic[m]=c;for(var u=0;u<d.length;u++){var g=d[u];c.mAniIdArray.push(g.tileid),c.mDurationTimeArray.push(g.duration)}}}}if(this._tileTexSetArr.push(null),this._tileSetArray.length>0){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;a<r.length;a++)e=e+"/"+r[a];return e},m.onTextureComplete=function(t){var i=(this._jsonData,t);n.isWebGL&&!this._enableLinear&&(i.bitmap.minFifter=9728,i.bitmap.magFifter=9728,i.bitmap.enableMerageInAtlas=!1),this._texArray.push(i);for(var e=this._currTileSet,r=e.tilewidth,h=e.tileheight,a=e.imagewidth,s=e.imageheight,o=(e.firstgid,Math.floor((a-e.margin-r)/(r+e.spacing))+1),l=Math.floor((s-e.margin-h)/(h+e.spacing))+1,_=null,m=0;l>m;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._gridWidth<this._mapTileW&&(this._gridWidth=this._mapTileW),this._gridWidth<this._mapTileH&&(this._gridWidth=this._mapTileH),this._gridW=Math.ceil(this._width/this._gridWidth),this._gridH=Math.ceil(this._height/this._gridHeight),this._totalGridNum=this._gridW*this._gridH,t=0;t<this._gridH;t++){var s=[];this._gridArray.push(s);for(var o=0;o<this._gridW;o++)s.push(null)}for(var l=this._jsonData.layers,n=0;n<l.length;n++){var _=l[n];if(1==_.visible){var p=new u;p.init(_,this),this._mapSprite.addChild(p),this._layerArray.push(p)}}this.moveViewPort(this._rect.x,this._rect.y),null!=this._completeHandler&&this._completeHandler.run()},m.getTexture=function(t){return t<this._tileTexSetArr.length?this._tileTexSetArr[t]:null},m.getMapProperties=function(t){return this._properties?this._properties[t]:null},m.getTileProperties=function(t,i,e){return this._tileProperties[t]&&this._tileProperties[t][i]?this._tileProperties[t][i][e]:null},m.getSprite=function(t,i,e){if(0<this._tileTexSetArr.length){var r=new c;r.initData(this,!0);var h=this._tileTexSetArr[t];if(null!=h&&null!=h.texture){if(h.isAnimation){var a=new g;this._index++,a.setTileTextureSet(this._index.toString(),h),r.addAniSprite(a),r.addChild(a)}else r.graphics.drawTexture(h.texture,0,0,i,e);r.drawImageNum++}return r}return null},m.setViewPortPivotByScale=function(t,i){this._pivotScaleX=t,this._pivotScaleY=i},m.moveViewPort=function(t,i){this._x=-t,this._y=-i,this._rect.x=t,this._rect.y=i,this.updateViewPort()},m.changeViewPort=function(t,i,e,r){this._x=-t,this._y=-i,this._rect.x=t,this._rect.y=i,this._rect.width=e,this._rect.height=r,this._viewPortWidth=e/this._scale,this._viewPortHeight=r/this._scale,this.updateViewPort()},m.changeViewPortBySize=function(t,i,e){return null==e&&(e=new l),this._centerX=this._rect.x+this._rect.width*this._pivotScaleX,this._centerY=this._rect.y+this._rect.height*this._pivotScaleY,e.x=this._centerX-t*this._pivotScaleX,e.y=this._centerY-i*this._pivotScaleY,e.width=t,e.height=i,this.changeViewPort(e.x,e.y,e.width,e.height),e},m.updateViewPort=function(){if(this._centerX=this._rect.x+this._rect.width*this._pivotScaleX,this._centerY=this._rect.y+this._rect.height*this._pivotScaleY,this._viewPortX=this._centerX-this._rect.width*this._pivotScaleX/this._scale,this._viewPortY=this._centerY-this._rect.height*this._pivotScaleY/this._scale,this._limitRange){var t=this._viewPortX+this._viewPortWidth;t>this._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;h<this._layerArray.length;h++)r=this._layerArray[h],r.updateGridPos()},m.clipViewPort=function(){var t=0,i=0,e=0,r=0;if(this._mapRect.left>this._mapLastRect.left){if(t=this._mapRect.left-this._mapLastRect.left,t>0)for(r=this._mapLastRect.left;r<this._mapLastRect.left+t;r++)for(e=this._mapLastRect.top;e<=this._mapLastRect.bottom;e++)this.hideGrid(r,e)}else if(i=this._mapLastRect.left-this._mapRect.left,i>0)for(r=this._mapRect.left;r<this._mapRect.left+i;r++)for(e=this._mapRect.top;e<=this._mapRect.bottom;e++)this.showGrid(r,e);if(this._mapRect.right>this._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;e<this._mapLastRect.top+t;e++)for(r=this._mapLastRect.left;r<=this._mapLastRect.right;r++)this.hideGrid(r,e)}else if(i=this._mapLastRect.top-this._mapRect.top,i>0)for(e=this._mapRect.top;e<this._mapRect.top+i;e++)for(r=this._mapRect.left;r<=this._mapRect.right;r++)this.showGrid(r,e);if(this._mapRect.bottom>this._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;y<this._layerArray.length;y++){f=this._layerArray[y],e=f.getDrawSprite(t,i),a.push(e);var v;switch(this._showGridKey&&(v="#",v+=this._colorArray[Math.floor(Math.random()*this._colorArray.length)],v+=this._colorArray[Math.floor(Math.random()*this._colorArray.length)],v+=this._colorArray[Math.floor(Math.random()*this._colorArray.length)]),this.orientation){case"isometric":var w=this.tileHeight/2,A=this.tileWidth/2,T=this._width/2;c=Math.floor(l/w),u=Math.floor(n/w),m=this._mapW+Math.floor((s-T)/A),d=this._mapW+Math.floor((o-T)/A);var x=(2*this._mapW,2*this._mapH);for(0>c&&(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.cacheAsBitmap=!0,e.autoSize=!1),e.drawImageNum>0&&f.addChild(e),this._showGridKey&&e.graphics.drawRect(0,0,_,p,null,v)}}else for(r=0;r<a.length&&r<this._layerArray.length;r++){var P=this._layerArray[r];P&&a[r]&&(e=a[r],0==e.visible&&e.drawImageNum>0&&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;h<e.length;h++)r=e[h],r.drawImageNum>0&&null!=r&&r.hide()}},m.getLayerObject=function(t,i){for(var e=null,r=0;r<this._layerArray.length&&(e=this._layerArray[r],e.layerName!=t);r++);return e?e.getObjectByName(i):null},m.destroy=function(){this._orientation="orthogonal",this._jsonData=null;var t=0;this._gridArray=[];var i;for(t=0;t<this._tileTexSetArr.length;t++)i=this._tileTexSetArr[t],i&&i.clearAll();this._tileTexSetArr=[];var e;for(t=0;t<this._texArray.length;t++)e=this._texArray[t],e.destroy();this._texArray=[],this._width=0,this._height=0,this._mapW=0,this._mapH=0,this._mapTileW=0,this._mapTileH=0,this._rect.setTo(0,0,0,0);var r;for(t=0;t<this._layerArray.length;t++)r=this._layerArray[t],r.clearAll();this._layerArray=[],this._mapSprite&&(this._mapSprite.destroy(),this._mapSprite=null),this._jsonLoader=null,this._loader=null;var h=this._animationDic;for(var a in h)delete h[a];this._properties=null,h=this._tileProperties;for(a in h)delete h[a];this._currTileSet=null,this._completeHandler=null,this._mapRect.clearAll(),this._mapLastRect.clearAll(),this._tileSetArray=[],this._gridWidth=450,this._gridHeight=450,this._gridW=0,this._gridH=0,this._x=0,this._y=0,this._index=0,this._enableLinear=!0,this._resPath=null,this._pathArray=null},m.mapSprite=function(){return this._mapSprite},m.getLayerByName=function(t){for(var i,e=0;e<this._layerArray.length;e++)if(i=this._layerArray[e],t==i.layerName)return i;return null},m.getLayerByIndex=function(t){return t<this._layerArray.length?this._layerArray[t]:null},h(0,m,"orientation",function(){return this._orientation}),h(0,m,"viewPortX",function(){return-this._viewPortX}),h(0,m,"scale",function(){return this._scale},function(t){0>=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._frameIndex<this.textureArray.length)){var r=this.textureArray[this._frameIndex];this.drawTexture(i,r)}},i.animate=function(){if(this.textureArray&&this.textureArray.length>0&&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;i<this.aniSpriteArray.length;i++)t=this.aniSpriteArray[i],t.show()}},e.hide=function(){if(this.visible){if(this.visible=!1,null==this.aniSpriteArray)return;for(var t,i=0;i<this.aniSpriteArray.length;i++)t=this.aniSpriteArray[i],t.hide()}},e.updatePos=function(){this.isAloneObject?(this._map&&(this.x=this.relativeX+this._map.viewPortX,this.y=this.relativeY+this._map.viewPortY),this.x<0||this.x>this._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;i<this.aniSpriteArray.length;i++)t=this.aniSpriteArray[i],t.clearAll();this.destroy(),this.relativeX=0,this.relativeY=0,this.isHaveAnimation=!1,this.aniSpriteArray=null,this.drawImageNum=0}},i}(_),u=function(t){function i(){this._map=null,this._mapData=null,this._tileWidthHalf=0,this._tileHeightHalf=0,this._mapWidthHalf=0,this._mapHeightHalf=0,this._gridSpriteArray=[],this._objDic=null,this._properties=null,this.layerName=null,i.__super.call(this),this._tempMapPos=new o}r(i,"laya.map.MapLayer",t);var e=i.prototype;return e.init=function(t,i){this._map=i,this._mapData=t.data;var e=(t.height,t.width,i.tileWidth),r=i.tileHeight;switch(this.layerName=t.name,this._properties=t.properties,this.alpha=t.opacity,this._tileWidthHalf=e/2,this._tileHeightHalf=r/2,this._mapWidthHalf=this._map.width/2-this._tileWidthHalf,this._mapHeightHalf=this._map.height/2,t.type){case"tilelayer":break;case"objectgroup":var h=t.objects;h.length>0&&(this._objDic={});for(var a,s=NaN,l=NaN,n=0;n<h.length;n++)if(a=h[n],1==a.visible){s=a.width,l=a.height;var _=i.getSprite(a.gid,s,l);if(null!=_){switch(this._map.orientation){case"isometric":this.getScreenPositionByTilePos(a.x/r,a.y/r,o.TEMP),_.pivot(s/2,l/2),_.rotation=a.rotation,_.x=_.relativeX=o.TEMP.x+this._map.viewPortX,_.y=_.relativeY=o.TEMP.y+this._map.viewPortY-l/2;break;case"staggered":_.pivot(s/2,l/2),_.rotation=a.rotation,_.x=_.relativeX=a.x+s/2,_.y=_.relativeY=a.y-l/2;break;case"orthogonal":_.pivot(s/2,l/2),_.rotation=a.rotation,_.x=_.relativeX=a.x+s/2,_.y=_.relativeY=a.y-l/2;break;case"hexagonal":_.x=_.relativeX=a.x,_.y=_.relativeY=a.y}this.addChild(_),this._gridSpriteArray.push(_),this._objDic[a.name]=_}}}},e.getObjectByName=function(t){return this._objDic?this._objDic[t]:null},e.getLayerProperties=function(t){return this._properties?this._properties[t]:null},e.getTileData=function(t,i){if(i>=0&&i<this._map.numRowsTile&&t>=0&&t<this._map.numColumnsTile){var e=i*this._map.numColumnsTile+t,r=this._mapData;if(null!=r&&e<r.length)return r[e]}return 0},e.getScreenPositionByTilePos=function(t,i,e){if(e){switch(this._map.orientation){case"isometric":e.x=this._map.width/2-(i-t)*this._tileWidthHalf,e.y=(i+t)*this._tileHeightHalf;break;case"staggered":t=Math.floor(t),i=Math.floor(i),e.x=t*this._map.tileWidth+(1&i)*this._tileWidthHalf,e.y=i*this._tileHeightHalf;break;case"orthogonal":e.x=t*this._map.tileWidth,e.y=i*this._map.tileHeight;break;case"hexagonal":t=Math.floor(t),i=Math.floor(i);var r=2*this._map.tileHeight/3;e.x=(t*this._map.tileWidth+i%2*this._tileWidthHalf)%this._map.gridWidth,e.y=i*r%this._map.gridHeight}e.x=(e.x+this._map.viewPortX)*this._map.scale,e.y=(e.y+this._map.viewPortY)*this._map.scale}},e.getTileDataByScreenPos=function(t,i){var e=0;return this.getTilePositionByScreenPos(t,i,this._tempMapPos)&&(e=this.getTileData(Math.floor(this._tempMapPos.x),Math.floor(this._tempMapPos.y))),e},e.getTilePositionByScreenPos=function(t,i,e){t=t/this._map.scale-this._map.viewPortX,i=i/this._map.scale-this._map.viewPortY;var r=this._map.tileWidth,h=this._map.tileHeight,a=0,s=0;switch(this._map.orientation){case"isometric":var o=t-this._map.width/2,l=i;return a=-(o/r-l/h),s=o/r+l/h,e&&(e.x=s,e.y=a),!0;case"staggered":if(e){var n=0,_=0,p=0,m=0;n=Math.floor(t/r)*r+r/2,_=Math.floor(i/h)*h+h/2,p=(t-n)*h/2,m=(i-_)*r/2,Math.abs(p)+Math.abs(m)<=r*h/4?(s=Math.floor(t/r),a=2*Math.floor(i/h)):(t-=r/2,s=Math.floor(t/r)+1,i-=h/2,a=2*Math.floor(i/h)+1),e.x=s-(1&a),e.y=a}return!0;case"orthogonal":return s=t/r,a=i/h,e&&(e.x=s,e.y=a),!0;case"hexagonal":var d=2*h/3;a=i/d,s=(t-a%2*this._tileWidthHalf)/r,e&&(e.x=s,e.y=a)}return!1},e.getDrawSprite=function(t,i){var e=new c;return e.relativeX=t*this._map.gridWidth,e.relativeY=i*this._map.gridHeight,e.initData(this._map),this._gridSpriteArray.push(e),e},e.updateGridPos=function(){for(var t,i=0;i<this._gridSpriteArray.length;i++)t=this._gridSpriteArray[i],(t.visible||t.isAloneObject)&&t.drawImageNum>0&&t.updatePos()},e.drawTileTexture=function(t,i,e){if(e>=0&&e<this._map.numRowsTile&&i>=0&&i<this._map.numColumnsTile){var r=e*this._map.numColumnsTile+i,h=this._mapData;if(null!=h&&r<h.length&&0!=h[r]){var a=this._map.getTexture(h[r]);if(a){var s=0,o=0,l=a.texture;switch(this._map.orientation){case"staggered":s=i*this._map.tileWidth%this._map.gridWidth+(1&e)*this._tileWidthHalf,o=e*this._tileHeightHalf%this._map.gridHeight;break;case"orthogonal":s=i*this._map.tileWidth%this._map.gridWidth,o=e*this._map.tileHeight%this._map.gridHeight;break;case"isometric":s=(this._mapWidthHalf+(i-e)*this._tileWidthHalf)%this._map.gridWidth,o=(i+e)*this._tileHeightHalf%this._map.gridHeight;break;case"hexagonal":var n=2*this._map.tileHeight/3;s=(i*this._map.tileWidth+e%2*this._tileWidthHalf)%this._map.gridWidth,o=e*n%this._map.gridHeight}if(a.isAnimation){var _=new g;_.x=s,_.y=o,_.setTileTextureSet(r.toString(),a),t.addAniSprite(_),t.addChild(_),t.isHaveAnimation=!0}else t.graphics.drawTexture(a.texture,s+a.offX,o+a.offY,l.width,l.height);return!0}}}return!1},e.clearAll=function(){this._map=null,this._mapData=null,this._tileWidthHalf=0,this._tileHeightHalf=0,this._mapWidthHalf=0,this._mapHeightHalf=0,this.layerName=null;var t=0;if(this._objDic){for(var i in this._objDic)delete this._objDic[i];this._objDic=null}var e;for(t=0;t<this._gridSpriteArray.length;t++)e=this._gridSpriteArray[t],e.clearAll();this._properties=null,this._tempMapPos=null},i}(_),g=function(t){function i(){this._tileTextureSet=null,this._aniName=null,i.__super.call(this)}r(i,"laya.map.TileAniSprite",t);var e=i.prototype;return e.setTileTextureSet=function(t,i){this._aniName=t,this._tileTextureSet=i,i.addAniSprite(this._aniName,this)},e.show=function(){this._tileTextureSet.addAniSprite(this._aniName,this)},e.hide=function(){this._tileTextureSet.removeAniSprite(this._aniName)},e.clearAll=function(){this._tileTextureSet.removeAniSprite(this._aniName),this.destroy(),this._tileTextureSet=null,this._aniName=null},i}(_);e.__init([m])}(window,document,Laya);