@@ -4,6 +4,7 @@ var StaticTilemapLayer = require('./staticlayer/StaticTilemapLayer.js');
44var DynamicTilemapLayer = require ( './dynamiclayer/DynamicTilemapLayer.js' ) ;
55var Tileset = require ( './Tileset' ) ;
66var Formats = require ( './Formats' ) ;
7+ var TilemapComponents = require ( './components' ) ;
78
89var Tilemap = new Class ( {
910
@@ -34,28 +35,12 @@ var Tilemap = new Class({
3435 this . tilesets = mapData . tilesets ;
3536 this . tiles = mapData . tiles ;
3637 this . objects = mapData . objects ;
38+ this . currentLayerIndex = 0 ;
3739
3840 // TODO: collision, collideIndexes, imagecollections, images
3941 // TODO: debugging methods
4042 } ,
4143
42- getTilesetIndex : function ( name )
43- {
44- return this . getIndex ( this . tilesets , name ) ;
45- } ,
46-
47- getIndex : function ( location , name )
48- {
49- for ( var i = 0 ; i < location . length ; i ++ )
50- {
51- if ( location [ i ] . name === name )
52- {
53- return i ;
54- }
55- }
56- return null ;
57- } ,
58-
5944 addTilesetImage : function ( tilesetName , key , tileWidth , tileHeight , tileMargin , tileSpacing , gid )
6045 {
6146 if ( tilesetName === undefined ) { return null ; }
@@ -108,14 +93,9 @@ var Tilemap = new Class({
10893
10994 createStaticLayer : function ( layerID , tileset , x , y )
11095 {
111- var index = layerID ;
96+ var index = this . getLayerIndex ( layerID ) ;
11297
113- if ( typeof layerID === 'string' )
114- {
115- index = this . getLayerIndex ( layer ) ;
116- }
117-
118- if ( index === null || index > this . layers . length )
98+ if ( index === null )
11999 {
120100 console . warn ( 'Cannot create tilemap layer: invalid layer ID given: ' + index ) ;
121101 return ;
@@ -131,14 +111,9 @@ var Tilemap = new Class({
131111
132112 createDynamicLayer : function ( layerID , tileset , x , y )
133113 {
134- var index = layerID ;
114+ var index = this . getLayerIndex ( layerID ) ;
135115
136- if ( typeof layer === 'string' )
137- {
138- index = this . getLayerIndex ( layer ) ;
139- }
140-
141- if ( index === null || index > this . layers . length )
116+ if ( index === null )
142117 {
143118 console . warn ( 'Cannot create tilemap layer: invalid layer ID given: ' + index ) ;
144119 return ;
@@ -150,7 +125,153 @@ var Tilemap = new Class({
150125 var layer = new DynamicTilemapLayer ( this . scene , this , index , tileset , x , y ) ;
151126 this . scene . sys . displayList . add ( layer ) ;
152127 return layer ;
128+ } ,
129+
130+ copy : function ( srcTileX , srcTileY , width , height , destTileX , destTileY , layer )
131+ {
132+ layer = this . getLayer ( layer ) ;
133+ if ( layer !== null )
134+ {
135+ TilemapComponents . Copy ( srcTileX , srcTileY , width , height , destTileX , destTileY , layer ) ;
136+ }
137+ return this ;
138+ } ,
139+
140+ fill : function ( index , tileX , tileY , width , height , layer )
141+ {
142+ layer = this . getLayer ( layer ) ;
143+ if ( layer !== null )
144+ {
145+ TilemapComponents . Fill ( index , tileX , tileY , width , height , layer ) ;
146+ }
147+ return this ;
148+ } ,
149+
150+ forEachTile : function ( callback , context , tileX , tileY , width , height , layer )
151+ {
152+ layer = this . getLayer ( layer ) ;
153+ if ( layer !== null )
154+ {
155+ TilemapComponents . ForEachTile ( callback , context , tileX , tileY , width , height , layer ) ;
156+ }
157+ return this ;
158+ } ,
159+
160+ getIndex : function ( location , name )
161+ {
162+ for ( var i = 0 ; i < location . length ; i ++ )
163+ {
164+ if ( location [ i ] . name === name )
165+ {
166+ return i ;
167+ }
168+ }
169+ return null ;
170+ } ,
171+
172+ getLayer : function ( layer )
173+ {
174+ var index = this . getLayerIndex ( layer ) ;
175+ return index !== null ? this . layers [ index ] : null ;
176+ } ,
177+
178+ getLayerIndex : function ( layer )
179+ {
180+ if ( layer === undefined )
181+ {
182+ return this . currentLayerIndex ;
183+ }
184+ else if ( typeof layer === 'string' )
185+ {
186+ return this . getLayerIndexByName ( layer ) ;
187+ }
188+ else if ( typeof layer === 'number' && layer < this . layers . length )
189+ {
190+ return layer ;
191+ }
192+ else if ( layer instanceof StaticTilemapLayer || layer instanceof DynamicTilemapLayer )
193+ {
194+ return layer . layerIndex ;
195+ }
196+ else
197+ {
198+ return null ;
199+ }
200+ } ,
201+
202+ getLayerIndexByName : function ( name )
203+ {
204+ return this . getIndex ( this . layers , name ) ;
205+ } ,
206+
207+ getTileAt : function ( tileX , tileY , layer , nonNull )
208+ {
209+ layer = this . getLayer ( layer ) ;
210+ if ( layer === null ) { return null ; }
211+ return TilemapComponents . GetTileAt ( tileX , tileY , layer , nonNull ) ;
212+ } ,
213+
214+ getTilesWithin : function ( tileX , tileY , width , height , layer )
215+ {
216+ layer = this . getLayer ( layer ) ;
217+ if ( layer === null ) { return null ; }
218+ return TilemapComponents . GetTilesWithin ( tileX , tileY , width , height , layer ) ;
219+ } ,
220+
221+ getTilesetIndex : function ( name )
222+ {
223+ return this . getIndex ( this . tilesets , name ) ;
224+ } ,
225+
226+ hasTileAt : function ( tileX , tileY , layer )
227+ {
228+ layer = this . getLayer ( layer ) ;
229+ if ( layer === null ) { return null ; }
230+ return TilemapComponents . HasTileAt ( tileX , tileY , layer ) ;
231+ } ,
232+
233+ layer : {
234+ get : function ( )
235+ {
236+ return this . layers [ this . currentLayerIndex ] ;
237+ } ,
238+
239+ set : function ( layer )
240+ {
241+ this . setLayer ( layer ) ;
242+ }
243+ } ,
244+
245+ randomize : function ( tileX , tileY , width , height , indices , layer )
246+ {
247+ layer = this . getLayer ( layer ) ;
248+ if ( layer !== null )
249+ {
250+ TilemapComponents . Randomize ( tileX , tileY , width , height , indices , layer ) ; ;
251+ }
252+ return this ;
253+ } ,
254+
255+ setLayer : function ( layer )
256+ {
257+ var index = this . getLayerIndex ( layer ) ;
258+ if ( index !== null )
259+ {
260+ this . currentLayerIndex = index ;
261+ }
262+ return this ;
263+ } ,
264+
265+ shuffle : function ( tileX , tileY , width , height , layer )
266+ {
267+ layer = this . getLayer ( layer ) ;
268+ if ( layer !== null )
269+ {
270+ TilemapComponents . Shuffle ( tileX , tileY , width , height , layer ) ;
271+ }
272+ return this ;
153273 }
274+
154275} ) ;
155276
156277module . exports = Tilemap ;
0 commit comments