Skip to content

Commit 54a5e64

Browse files
committed
Lots of new tile map commands and tests.
1 parent 2a5b6ef commit 54a5e64

24 files changed

Lines changed: 1339 additions & 83 deletions

Phaser/GameMath.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -855,29 +855,27 @@ module Phaser {
855855
/**
856856
* Fetch a random entry from the given array.
857857
* Will return null if random selection is missing, or array has no entries.
858-
* <code>G.getRandom()</code> is deterministic and safe for use with replays/recordings.
859-
* HOWEVER, <code>U.getRandom()</code> is NOT deterministic and unsafe for use with replays/recordings.
860858
*
861-
* @param Objects An array of objects.
862-
* @param StartIndex Optional offset off the front of the array. Default value is 0, or the beginning of the array.
863-
* @param Length Optional restriction on the number of values you want to randomly select from.
859+
* @param objects An array of objects.
860+
* @param startIndex Optional offset off the front of the array. Default value is 0, or the beginning of the array.
861+
* @param length Optional restriction on the number of values you want to randomly select from.
864862
*
865863
* @return The random object that was selected.
866864
*/
867-
public getRandom(Objects, StartIndex: number = 0, Length: number = 0) {
865+
public getRandom(objects, startIndex: number = 0, length: number = 0) {
868866

869-
if (Objects != null)
867+
if (objects != null)
870868
{
871-
var l: number = Length;
869+
var l: number = length;
872870

873-
if ((l == 0) || (l > Objects.length - StartIndex))
871+
if ((l == 0) || (l > objects.length - startIndex))
874872
{
875-
l = Objects.length - StartIndex;
873+
l = objects.length - startIndex;
876874
}
877875

878876
if (l > 0)
879877
{
880-
return Objects[StartIndex + Math.floor(Math.random() * l)];
878+
return objects[startIndex + Math.floor(Math.random() * l)];
881879
}
882880
}
883881

Phaser/gameobjects/Tilemap.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,14 @@ module Phaser {
282282

283283
}
284284

285+
public putTile(x: number, y: number, index: number, layer?: number = 0) {
286+
287+
this.layers[layer].putTile(x, y, index);
288+
289+
}
290+
285291
// Set current layer
286292
// Set layer order?
287-
// Get block of tiles
288-
// Swap tiles around
289293
// Delete tiles of certain type
290294
// Erase tiles
291295

Phaser/system/TilemapLayer.ts

Lines changed: 113 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,102 @@ module Phaser {
7575
public tileMargin: number = 0;
7676
public tileSpacing: number = 0;
7777

78+
public putTile(x: number, y: number, index: number) {
79+
80+
x = this._game.math.snapToFloor(x, this.tileWidth) / this.tileWidth;
81+
y = this._game.math.snapToFloor(y, this.tileHeight) / this.tileHeight;
82+
83+
if (y >= 0 && y < this.mapData.length)
84+
{
85+
if (x >= 0 && x < this.mapData[y].length)
86+
{
87+
this.mapData[y][x] = index;
88+
}
89+
}
90+
91+
}
92+
93+
public swapTile(tileA: number, tileB: number, x?: number = 0, y?: number = 0, width?: number = this.widthInTiles, height?: number = this.heightInTiles) {
94+
95+
this.getTempBlock(x, y, width, height);
96+
97+
for (var r = 0; r < this._tempTileBlock.length; r++)
98+
{
99+
// First sweep marking tileA as needing a new index
100+
if (this._tempTileBlock[r].tile.index == tileA)
101+
{
102+
this._tempTileBlock[r].newIndex = true;
103+
}
104+
105+
// In the same pass we can swap tileB to tileA
106+
if (this._tempTileBlock[r].tile.index == tileB)
107+
{
108+
this.mapData[this._tempTileBlock[r].y][this._tempTileBlock[r].x] = tileA;
109+
}
110+
}
111+
112+
for (var r = 0; r < this._tempTileBlock.length; r++)
113+
{
114+
// And now swap our newIndex tiles for tileB
115+
if (this._tempTileBlock[r].newIndex == true)
116+
{
117+
this.mapData[this._tempTileBlock[r].y][this._tempTileBlock[r].x] = tileB;
118+
}
119+
}
120+
121+
}
122+
123+
public fillTile(index: number, x?: number = 0, y?: number = 0, width?: number = this.widthInTiles, height?: number = this.heightInTiles) {
124+
125+
this.getTempBlock(x, y, width, height);
126+
127+
for (var r = 0; r < this._tempTileBlock.length; r++)
128+
{
129+
this.mapData[this._tempTileBlock[r].y][this._tempTileBlock[r].x] = index;
130+
}
131+
132+
}
133+
134+
public randomiseTiles(tiles: number[], x?: number = 0, y?: number = 0, width?: number = this.widthInTiles, height?: number = this.heightInTiles) {
135+
136+
this.getTempBlock(x, y, width, height);
137+
138+
for (var r = 0; r < this._tempTileBlock.length; r++)
139+
{
140+
this.mapData[this._tempTileBlock[r].y][this._tempTileBlock[r].x] = this._game.math.getRandom(tiles);
141+
}
142+
143+
}
144+
145+
public replaceTile(tileA: number, tileB: number, x?: number = 0, y?: number = 0, width?: number = this.widthInTiles, height?: number = this.heightInTiles) {
146+
147+
this.getTempBlock(x, y, width, height);
148+
149+
for (var r = 0; r < this._tempTileBlock.length; r++)
150+
{
151+
if (this._tempTileBlock[r].tile.index == tileA)
152+
{
153+
this.mapData[this._tempTileBlock[r].y][this._tempTileBlock[r].x] = tileB;
154+
}
155+
}
156+
157+
}
158+
159+
public getTileBlock(x: number, y: number, width: number, height: number) {
160+
161+
var output = [];
162+
163+
this.getTempBlock(x, y, width, height);
164+
165+
for (var r = 0; r < this._tempTileBlock.length; r++)
166+
{
167+
output.push({ x: this._tempTileBlock[r].x, y: this._tempTileBlock[r].y, tile: this._tempTileBlock[r].tile });
168+
}
169+
170+
return output;
171+
172+
}
173+
78174
public getTileFromWorldXY(x: number, y: number): number {
79175

80176
x = this._game.math.snapToFloor(x, this.tileWidth) / this.tileWidth;
@@ -99,7 +195,9 @@ module Phaser {
99195
this._tempTileH = (this._game.math.snapToCeil(object.bounds.height, this.tileHeight) + this.tileHeight) / this.tileHeight;
100196

101197
// Loop through the tiles we've got and check overlaps accordingly (the results are stored in this._tempTileBlock)
102-
this.getTileBlock(this._tempTileX, this._tempTileY, this._tempTileW, this._tempTileH);
198+
199+
this._tempBlockResults = [];
200+
this.getTempBlock(this._tempTileX, this._tempTileY, this._tempTileW, this._tempTileH, true);
103201

104202
Collision.TILE_OVERLAP = false;
105203

@@ -115,7 +213,7 @@ module Phaser {
115213

116214
}
117215

118-
public getTileBlock(x: number, y: number, width: number, height: number) {
216+
private getTempBlock(x: number, y: number, width: number, height: number, collisionOnly?: bool = false) {
119217

120218
if (x < 0)
121219
{
@@ -138,16 +236,25 @@ module Phaser {
138236
}
139237

140238
this._tempTileBlock = [];
141-
this._tempBlockResults = [];
142239

143240
for (var ty = y; ty < y + height; ty++)
144241
{
145242
for (var tx = x; tx < x + width; tx++)
146243
{
147-
// We only want to consider the tile for checking if you can actually collide with it
148-
if (this.mapData[ty] && this.mapData[ty][tx] && this._parent.tiles[this.mapData[ty][tx]].allowCollisions != Collision.NONE)
244+
if (collisionOnly)
245+
{
246+
// We only want to consider the tile for checking if you can actually collide with it
247+
if (this.mapData[ty] && this.mapData[ty][tx] && this._parent.tiles[this.mapData[ty][tx]].allowCollisions != Collision.NONE)
248+
{
249+
this._tempTileBlock.push({ x: tx, y: ty, tile: this._parent.tiles[this.mapData[ty][tx]] });
250+
}
251+
}
252+
else
149253
{
150-
this._tempTileBlock.push({ x: tx, y: ty, tile: this._parent.tiles[this.mapData[ty][tx]] });
254+
if (this.mapData[ty] && this.mapData[ty][tx])
255+
{
256+
this._tempTileBlock.push({ x: tx, y: ty, tile: this._parent.tiles[this.mapData[ty][tx]] });
257+
}
151258
}
152259
}
153260
}
@@ -194,8 +301,6 @@ module Phaser {
194301

195302
this.boundsInTiles.setTo(0, 0, this.widthInTiles, this.heightInTiles);
196303

197-
//console.log('layer bounds', this.boundsInTiles);
198-
199304
}
200305

201306
public parseTileOffsets():number {

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,14 @@ V0.9.5
4141
* Tilemap.collide now optionally takes callback and context parameters which are used if collision occurs.
4242
* Added Tilemap.collisionCallback and Tilemap.collisionCallbackContext so you can set them once and not re-set them on every call to collide.
4343
* Collision.separateTile now has 2 extra parameters: separateX and separateY. If true the object will be separated on overlap, otherwise just the overlap boolean result is returned.
44-
* Added Tile.separateX and Tile.separateY (both true by default), if true an object will be separated from the tile on overlap. Set to false if you don't want a tile to stop an object from moving, you just want it to return collision data to your callback.
44+
* Added Tile.separateX and Tile.separateY (both true by default). Set to false if you don't want a tile to stop an object from moving, you just want it to return collision data to your callback.
4545
* Added Tilemap.getTileByIndex(value) to access a specific type of tile, rather than by its map index.
46+
* Added TilemapLayer.putTile(x,y,index) - allows you to insert new tile data into the map layer (create your own tile editor!).
47+
* TilemapLayer.getTileBlock now returns a unique Array of map data, not just a reference to the temporary block array
48+
* Added TilemapLayer.swapTile - scans the given region of the map for all instances of tileA and swaps them for tileB, and vice versa.
49+
* Added TilemapLayer.replaceTile - scans the given region of the map and replaces all instances of tileA with tileB. tileB is left unaffected.
50+
* Added TilemapLayer.fillTiles - fills the given region of the map with the tile specified.
51+
* Added TilemapLayer.randomiseTiles - fills the given region of the map with a random tile from the list specified.
4652

4753

4854

Tests/Tests.csproj

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,40 @@
159159
<Content Include="tilemap\collision.js">
160160
<DependentUpon>collision.ts</DependentUpon>
161161
</Content>
162+
<TypeScriptCompile Include="tilemap\fill tiles.ts" />
163+
<Content Include="tilemap\fill tiles.js">
164+
<DependentUpon>fill tiles.ts</DependentUpon>
165+
</Content>
162166
<Content Include="tilemap\get tile.js">
163167
<DependentUpon>get tile.ts</DependentUpon>
164168
</Content>
169+
<TypeScriptCompile Include="tilemap\put tile.ts" />
170+
<TypeScriptCompile Include="tilemap\map draw.ts" />
171+
<Content Include="tilemap\map draw.js">
172+
<DependentUpon>map draw.ts</DependentUpon>
173+
</Content>
174+
<Content Include="tilemap\put tile.js">
175+
<DependentUpon>put tile.ts</DependentUpon>
176+
</Content>
177+
<TypeScriptCompile Include="tilemap\replace tiles.ts" />
178+
<TypeScriptCompile Include="tilemap\random tiles.ts" />
179+
<Content Include="tilemap\random tiles.js">
180+
<DependentUpon>random tiles.ts</DependentUpon>
181+
</Content>
182+
<Content Include="tilemap\replace tiles.js">
183+
<DependentUpon>replace tiles.ts</DependentUpon>
184+
</Content>
165185
<Content Include="tilemap\small map.js">
166186
<DependentUpon>small map.ts</DependentUpon>
167187
</Content>
188+
<TypeScriptCompile Include="tilemap\swap tiles.ts" />
189+
<TypeScriptCompile Include="tilemap\sprite draw tiles.ts" />
190+
<Content Include="tilemap\sprite draw tiles.js">
191+
<DependentUpon>sprite draw tiles.ts</DependentUpon>
192+
</Content>
193+
<Content Include="tilemap\swap tiles.js">
194+
<DependentUpon>swap tiles.ts</DependentUpon>
195+
</Content>
168196
<Content Include="tweens\bounce.js">
169197
<DependentUpon>bounce.ts</DependentUpon>
170198
</Content>

Tests/assets/maps/map draw.tmx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<map version="1.0" orientation="orthogonal" width="50" height="40" tilewidth="16" tileheight="16">
3+
<tileset firstgid="1" name="platformer_tiles" tilewidth="16" tileheight="16">
4+
<image source="../../../../kiwi-lite/Test Suite/assets/tiles/platformer_tiles.png" width="304" height="96"/>
5+
</tileset>
6+
<layer name="Tile Layer 1" width="50" height="40">
7+
<data encoding="base64" compression="zlib">
8+
eJztltsNwyAMRekQmaadod1/m4aPSJYV8BPHIK501Y8a4xPM4yilHIv4NdijdXFgzcqxynpk5JCMl3BQc2k5PHJwOTzq0OTnxkb3lXW/tMZTHHj80xytHJCjF+fBYa0fC+Zr3R84PnIPaOqI2h939Xl9hxLIIZGm/7JySMdk5NCwYA6NtOM4ebnfA55Xlh6g5rSsmYYD/mpqv5uTG2vp0zsOmJNioWTpV4l6feWxdyMYqvB97nHWwFycGI85ORyj7gDNfmj9x3lfaSTpO8u6jeToraFn30J5cmjPTA+N6qtoZX1fZeUYbev76lImDlzTk/LgmFGbI5cqw+f0e3JXht/p7+RegWF7e5v2H5fwcsk=
9+
</data>
10+
</layer>
11+
</map>

Tests/assets/maps/mapdraw.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{ "height":40,
2+
"layers":[
3+
{
4+
"data":[21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 21, 21, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 21, 21, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 21, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 21, 21, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 79, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78],
5+
"height":40,
6+
"name":"Tile Layer 1",
7+
"opacity":1,
8+
"type":"tilelayer",
9+
"visible":true,
10+
"width":50,
11+
"x":0,
12+
"y":0
13+
}],
14+
"orientation":"orthogonal",
15+
"properties":
16+
{
17+
18+
},
19+
"tileheight":16,
20+
"tilesets":[
21+
{
22+
"firstgid":1,
23+
"image":"..\/..\/..\/..\/kiwi-lite\/Test Suite\/assets\/tiles\/platformer_tiles.png",
24+
"imageheight":96,
25+
"imagewidth":304,
26+
"margin":0,
27+
"name":"platformer_tiles",
28+
"properties":
29+
{
30+
31+
},
32+
"spacing":0,
33+
"tileheight":16,
34+
"tilewidth":16
35+
}],
36+
"tilewidth":16,
37+
"version":1,
38+
"width":50
39+
}

0 commit comments

Comments
 (0)