From 50eee95c990637b577a368333e80ef11f7aefbba Mon Sep 17 00:00:00 2001 From: photonstorm Date: Wed, 18 Dec 2013 00:44:04 +0000 Subject: [PATCH] Improved TilemapLayer rendering and debug rendering significantly. Cleared out some old assets and added a new map. --- README.md | 5 + build/phaser.d.ts | 3 +- .../assets/maps/SuperMarioBros-World1-1.png | Bin 0 -> 15738 bytes .../maps/SuperMarioBros-World1-1_map.tmx | 3190 ++++++ examples/assets/maps/mario1.json | 39 - examples/assets/maps/mario1.png | Bin 3181 -> 0 bytes examples/assets/maps/smb_bg.json | 39 - examples/assets/maps/smb_bg.png | Bin 1669 -> 0 bytes examples/assets/maps/smb_level1.json | 39 - examples/assets/maps/smb_tiles.png | Bin 3740 -> 0 bytes examples/assets/maps/super_mario.json | 39 + examples/assets/maps/super_mario.png | Bin 0 -> 1541 bytes ...nd-yoshis_island_1(105-background)_map.tmx | 8650 ----------------- ...is_island-yoshis_island_1(105-map)_map.tmx | 8650 ----------------- examples/wip/tilemap.js | 20 +- src/loader/Cache.js | 14 +- src/loader/Loader.js | 10 +- src/tilemap/TilemapLayer.js | 123 +- src/tilemap/TilemapParser.js | 40 +- src/tilemap/Tileset.js | 64 +- 20 files changed, 3400 insertions(+), 17525 deletions(-) create mode 100644 examples/assets/maps/SuperMarioBros-World1-1.png create mode 100644 examples/assets/maps/SuperMarioBros-World1-1_map.tmx delete mode 100644 examples/assets/maps/mario1.json delete mode 100644 examples/assets/maps/mario1.png delete mode 100644 examples/assets/maps/smb_bg.json delete mode 100644 examples/assets/maps/smb_bg.png delete mode 100644 examples/assets/maps/smb_level1.json delete mode 100644 examples/assets/maps/smb_tiles.png create mode 100644 examples/assets/maps/super_mario.json create mode 100644 examples/assets/maps/super_mario.png delete mode 100644 examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-background)_map.tmx delete mode 100644 examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-map)_map.tmx diff --git a/README.md b/README.md index b749e56e..4eeade0e 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,11 @@ Change Log Version 1.1.4 - "Kandor" - In development +Significant API changes: + +* Loader.tileset has a new method signature. Please use the new format: load.tileset(key, url, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, total). + + New features: * Added a stage.fullScreenScaleMode property to determine scaling when fullscreen (thanks oysterCrusher) diff --git a/build/phaser.d.ts b/build/phaser.d.ts index e82344c4..6f39d8f9 100644 --- a/build/phaser.d.ts +++ b/build/phaser.d.ts @@ -1424,9 +1424,10 @@ declare module Phaser { addToFileList(type: string, key: string, url: string, properties: Array): void; image(key: string, url: string, overwrite?: boolean): void; text(key: string, url: string, overwrite?: boolean): void; - spritesheet(key: string, url: string, frameWidth: number, frameHeight: number, frameMax: number): void; + spritesheet(key: string, url: string, frameWidth: number, frameHeight: number, frameMax?: number, margin?: number, spacing?: number): void; audio(key: string, urls: string[], autoDecode?: boolean): void; tilemap(key: string, tilesetURL: string, mapDataURL?: string, mapData?: Object, format?: string): void; + tileset(key: string, url: string, tileWidth: number, tileHeight: number, tileMargin?: number, tileSpacing?: number, rows?: number, columns?: number, limit?: number): void; bitmapFont(key: string, textureURL: string, xmlURL?: string, xmlData?: Object): void; atlasJSONArray(key: string, textureURL: string, atlasURL: string, atlasData: Object): void; atlasJSONHash(key: string, textureURL: string, atlasURL: string, atlasData: Object): void; diff --git a/examples/assets/maps/SuperMarioBros-World1-1.png b/examples/assets/maps/SuperMarioBros-World1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3c024c1b4692c9ebe12205b28f71bebf87d8e555 GIT binary patch literal 15738 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 literal 0 HcmV?d00001 diff --git a/examples/assets/maps/SuperMarioBros-World1-1_map.tmx b/examples/assets/maps/SuperMarioBros-World1-1_map.tmx new file mode 100644 index 00000000..b2d619ce --- /dev/null +++ b/examples/assets/maps/SuperMarioBros-World1-1_map.tmx @@ -0,0 +1,3190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/assets/maps/mario1.json b/examples/assets/maps/mario1.json deleted file mode 100644 index ffff33bb..00000000 --- a/examples/assets/maps/mario1.json +++ /dev/null @@ -1,39 +0,0 @@ -{ "height":13, - "layers":[ - { - "data":[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, 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, 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, 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, 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, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, 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, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, 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, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, 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, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 1, 1, 1, 1, 6, 7, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 1, 1, 1, 1, 6, 7, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 1, 1, 1, 1, 6, 7, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 1, 1, 1, 1, 6, 7, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10, 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 7, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 7, 7, 8, 1, 11, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 7, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 7, 7, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 1, 6, 7, 8, 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, 15, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 16, 16, 16, 16, 16, 1, 1, 1, 16, 16, 16, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 1, 1, 1, 1, 16, 15, 15, 16, 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, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 20, 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, 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, 22, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 20, 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, 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, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 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, 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, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 27, 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, 13, 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, 28, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 1, 1, 1, 1, 1, 1, 30, 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, 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, 19, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 31, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 1, 1, 16, 15, 16, 15, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 15, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 16, 28, 1, 1, 1, 1, 15, 1, 1, 15, 1, 1, 15, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 1, 1, 1, 1, 1, 1, 19, 1, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 1, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 15, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 34, 35, 36, 1, 1, 1, 1, 1, 1, 1, 37, 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, 32, 33, 1, 1, 1, 1, 1, 1, 38, 39, 1, 1, 37, 1, 1, 1, 1, 1, 1, 40, 41, 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, 37, 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, 19, 19, 1, 1, 19, 19, 1, 1, 1, 1, 37, 1, 1, 1, 19, 19, 19, 1, 1, 19, 19, 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, 19, 19, 19, 19, 19, 19, 19, 1, 1, 1, 1, 37, 1, 1, 1, 20, 1, 1, 1, 31, 42, 42, 42, 31, 1, 1, 1, 1, 1, 43, 44, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 33, 1, 1, 1, 1, 1, 1, 1, 1, 38, 39, 1, 1, 1, 1, 1, 1, 38, 39, 1, 43, 44, 45, 1, 1, 1, 1, 1, 46, 47, 1, 1, 1, 1, 1, 1, 37, 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, 43, 44, 45, 1, 1, 1, 1, 1, 48, 49, 1, 1, 1, 1, 1, 1, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 19, 1, 1, 19, 19, 19, 1, 1, 43, 44, 45, 1, 19, 19, 19, 19, 1, 1, 19, 19, 19, 1, 1, 1, 37, 1, 32, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 33, 1, 19, 19, 19, 19, 19, 19, 19, 19, 1, 1, 1, 43, 44, 45, 1, 1, 20, 1, 1, 1, 35, 35, 50, 35, 35, 1, 1, 37, 1, 43, 44, 51, 52, 45, 1, 1, 1, 1, 1, 1, 53, 54, 54, 54, 55, 43, 44, 45, 1, 56, 57, 1, 53, 54, 55, 1, 1, 38, 39, 1, 1, 1, 1, 1, 1, 1, 1, 38, 39, 58, 59, 54, 54, 55, 1, 38, 39, 43, 44, 60, 61, 62, 57, 63, 64, 1, 38, 39, 53, 54, 54, 54, 55, 43, 44, 45, 1, 1, 1, 1, 53, 54, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 54, 54, 55, 1, 65, 66, 67, 68, 60, 61, 45, 1, 1, 1, 1, 69, 70, 53, 54, 54, 54, 55, 43, 44, 45, 1, 1, 1, 1, 53, 54, 55, 1, 71, 72, 66, 65, 66, 58, 73, 1, 1, 1, 1, 19, 19, 19, 19, 54, 54, 19, 19, 19, 19, 43, 44, 60, 61, 19, 19, 19, 19, 19, 1, 1, 19, 19, 19, 19, 55, 43, 44, 45, 74, 75, 1, 1, 53, 54, 55, 1, 1, 1, 76, 77, 78, 1, 1, 1, 38, 39, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 1, 43, 44, 60, 61, 45, 1, 19, 1, 1, 1, 35, 35, 79, 35, 35, 55, 43, 44, 45, 80, 80, 81, 82, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 83, 84, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 85, 86, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 83, 84, 87, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 1, 1, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 1, 1, 1, 80, 80, 80, 80, 80, 80, 88, 89, 90, 80, 80, 80, 80, 80, 80, 80, 91, 92, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 93, 94, 88, 80, 88, 85, 86, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 1, 1, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 95, 96, 97, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80], - "height":13, - "name":"ShoeBox Tile Grab", - "opacity":1, - "type":"tilelayer", - "visible":true, - "width":211, - "x":0, - "y":0 - }], - "orientation":"orthogonal", - "properties": - { - - }, - "tileheight":16, - "tilesets":[ - { - "firstgid":1, - "image":"..\/..\/..\/..\/..\/..\/Art\/Artwork for game inspirations\/Super Mario Level Maps\/NES\/mario-1-1_bank.png", - "imageheight":144, - "imagewidth":176, - "margin":0, - "name":"mario-1-1_bank.png", - "properties": - { - - }, - "spacing":0, - "tileheight":16, - "tilewidth":16 - }], - "tilewidth":16, - "version":1, - "width":211 -} \ No newline at end of file diff --git a/examples/assets/maps/mario1.png b/examples/assets/maps/mario1.png deleted file mode 100644 index 9cc96c1754be7a6c91c88dccafe3cbc90becb301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3181 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 TaiH#c00000NkvXXu0mjfU@!Dv diff --git a/examples/assets/maps/smb_bg.json b/examples/assets/maps/smb_bg.json deleted file mode 100644 index 6a7ef43c..00000000 --- a/examples/assets/maps/smb_bg.json +++ /dev/null @@ -1,39 +0,0 @@ -{ "height":27, - "layers":[ - { - "data":[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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 1, 1, 1, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 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, 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, 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, 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, 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, 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, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 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, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 9, 10, 10, 11, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 13, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 10, 10, 14, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 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, 12, 15, 10, 14, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 12, 10, 10, 14, 19, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 17, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 1, 1, 5, 6, 22, 23, 13, 14, 3, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 20, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 2, 3, 4, 1, 1, 9, 10, 10, 26, 27, 28, 29, 30, 25, 3, 4, 1, 1, 1, 1, 16, 17, 18, 1, 1, 1, 16, 17, 18, 31, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 25, 3, 4, 1, 1, 1, 12, 13, 10, 14, 33, 10, 10, 34, 25, 1, 1, 1, 1, 1, 1, 19, 20, 21, 1, 1, 1, 19, 20, 21, 35, 32, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 36, 7, 8, 1, 1, 1, 12, 10, 15, 14, 12, 10, 15, 14, 25, 1, 1, 1, 1, 2, 3, 3, 24, 25, 1, 1, 1, 35, 32, 25, 31, 37, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 13, 10, 11, 1, 5, 6, 12, 10, 10, 14, 12, 10, 10, 14, 25, 1, 16, 17, 18, 1, 1, 31, 20, 25, 2, 3, 3, 24, 32, 25, 31, 38, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 1, 9, 10, 12, 13, 10, 14, 12, 13, 10, 14, 25, 1, 19, 20, 21, 1, 1, 35, 32, 25, 1, 1, 1, 35, 32, 39, 3, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 10, 14, 3, 12, 10, 12, 10, 10, 14, 12, 10, 10, 14, 3, 3, 3, 24, 25, 5, 6, 29, 30, 25, 1, 2, 3, 37, 36, 29, 30, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 15, 14, 1, 12, 15, 12, 10, 10, 14, 12, 10, 15, 14, 3, 4, 35, 32, 25, 9, 10, 10, 34, 25, 3, 3, 4, 38, 10, 10, 34, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 10, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 10, 14, 25, 1, 31, 20, 25, 12, 13, 10, 14, 25, 1, 43, 41, 12, 10, 13, 14, 12, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 23, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 25, 3, 35, 39, 3, 12, 10, 10, 14, 3, 4, 47, 45, 12, 10, 27, 28, 22, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 41, 42, 14, 3, 12, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 14, 41, 41, 41, 41, 12, 40, 41, 41, 41, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45, 45, 46, 14, 41, 12, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 10, 14, 45, 45, 45, 45, 12, 44, 45, 45, 45], - "height":27, - "name":"ShoeBox Tile Grab", - "opacity":1, - "type":"tilelayer", - "visible":true, - "width":320, - "x":0, - "y":0 - }], - "orientation":"orthogonal", - "properties": - { - - }, - "tileheight":16, - "tilesets":[ - { - "firstgid":1, - "image":"super_mario_world-1_yoshis_island-yoshis_island_1(105-background)_bank.png", - "imageheight":80, - "imagewidth":176, - "margin":0, - "name":"super_mario_world-1_yoshis_island-yoshis_island_1(105-background)_bank.png", - "properties": - { - - }, - "spacing":0, - "tileheight":16, - "tilewidth":16 - }], - "tilewidth":16, - "version":1, - "width":320 -} \ No newline at end of file diff --git a/examples/assets/maps/smb_bg.png b/examples/assets/maps/smb_bg.png deleted file mode 100644 index 080b7219b955559093f68f0e65decfc37abe3186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1669 zcmV;027394P)1u+#`D$Hk5U#uDNH1{jQD+#eQ zxDb$+ij>%VAej*ba7=KaHlifRkrjCQ(q0u_4#bfTI#OyJ30{;LQ2^)IXeh)~kfY2C zZANebetmmO3-5jGSvDE#ayp{|AI^^p@b}v-EyVY+XM$G?V(+=J%m@kN{|<0Ah%xFL z6<#TbqnQsVGeQF3hYI%~M}FQrRDC1CD;9n&1zwvH1#j^1YbkIpCGPtf;FX5B6nKDm z1UW)~j4Pwvt9hWy1n(ilT1g=fV50PF?lScpf}pNJ%zXaMDe@cGPh$24a{s>ci~IHU zb=kE9C*3k8-0m|d?|_w(aM9!r4(_*FR&M*)~> zMsR~)rNDvUg*yLBf&V{CfdfRfu+D#vu~PlO;T8C7kvOlAEEVD?09z^W$W2A!0sxHJ zbkFgw)Ynphdv4s5d91S0Ajv$@5@H~>uy+=kmja7tqj@DYOQussFdwjHL==GC6qpMD z<||;0HyD!y?fnu$>jPUt=lud4ttDo!%m9XfOnrkb6&nMuRDIwp0gO&)w+2|k1%p-K z9tv#*)~*j+00#hA+K-6+mP!L&>-xZF1emgZZU9R~ay$-xY6sLyGaUQO9kctn4v!KWdWwBaYP$f%Z$iW zANXZ1tvjEIl+s0KYD!kqbj9IkI^?^?hFgN^4tr~e$05GBg zXRi-@c?I76xCgve3VfFOz?W2D=w?&u^J?ZoNGb5y>I0uzfjOskZ2bd^Y&1-L*~|b- z*uvfbbJw|X6$@IQS2LfKQ(yKh@IvN$N`Scs0;vUnz-yH|Oa0OV@+I%sz4B0`#=yNK zlY6^W%5)oX?7`gXok86ls%SJi9O9ISIu89D!1{~3DHpK#r z`Q84IkA=8#!;=tzSN}dVYEnR99p@4S;HcO0LIKA9=IVYyk^*DQh>QUDpmNSm(s6l|N0FR(X0yxV>=`(;izcqTGpf|oYY9uQoz(V zT!CkyWG#R(p=c=+f}+G%@6dC`tT%2xEjO9R8(`@x7BK0f1@Sxj!2AR-H=i~lz?L6u zLN73!^#b_D@&Gl@!Aq!6t9I??3GWy>EP$(}0C=<&S^1#V3SbYj;STS^4a3R@tyTbA z!rLqG17KD@Xte^^3fh?hv+_Z!6~NT;P?+cFVj7b{$oZhvuH8J~odHbB2d!2BTV90M z!#gHKlk!2U6~LAkSnobbLFa>3yLN--U2>i?cxN94qVhqjl>&RgyZS5}oDW*96j%z< zS*I4p0Of;LD}c4SRB57RK4`T9*aKWjakv7wnhL;PCcaJRbv001p? zMObuGZ)S9NVRB^vVtFoNY;SL5WO*)Qa(QrcZ!T$VVP|D7P)Z)9b1s0M%T P00000NkvXXu0mjfwsG-6 diff --git a/examples/assets/maps/smb_level1.json b/examples/assets/maps/smb_level1.json deleted file mode 100644 index 95353ba9..00000000 --- a/examples/assets/maps/smb_level1.json +++ /dev/null @@ -1,39 +0,0 @@ -{ "height":27, - "layers":[ - { - "data":[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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 2, 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, 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, 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, 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, 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, 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, 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, 3, 3, 3, 3, 3, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 4, 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, 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, 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, 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, 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, 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, 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, 5, 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, 6, 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, 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, 7, 1, 8, 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, 4, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 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, 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, 9, 10, 10, 10, 10, 11, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 13, 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, 5, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 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, 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, 14, 15, 15, 15, 15, 16, 11, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 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, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 13, 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, 18, 19, 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, 20, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 19, 1, 1, 18, 19, 1, 1, 18, 19, 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, 20, 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, 9, 10, 10, 10, 22, 15, 15, 15, 15, 16, 11, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 13, 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, 18, 23, 15, 24, 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, 25, 26, 27, 28, 1, 1, 1, 1, 1, 1, 1, 29, 30, 30, 31, 1, 1, 1, 1, 1, 1, 18, 23, 15, 24, 18, 23, 15, 24, 18, 23, 15, 24, 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, 25, 26, 27, 28, 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, 14, 15, 15, 15, 32, 15, 15, 15, 15, 15, 16, 11, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 13, 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, 18, 23, 15, 15, 15, 24, 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, 25, 33, 34, 35, 36, 37, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 38, 1, 1, 18, 23, 15, 15, 39, 23, 15, 15, 39, 23, 15, 15, 15, 24, 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, 40, 6, 6, 40, 1, 1, 1, 1, 25, 33, 34, 35, 36, 41, 1, 1, 1, 1, 1, 1, 42, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 1, 45, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 15, 15, 32, 15, 15, 15, 15, 15, 15, 16, 11, 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, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10, 10, 10, 10, 10, 10, 10, 47, 1, 1, 1, 1, 1, 1, 48, 49, 1, 1, 1, 1, 1, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 13, 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, 50, 15, 15, 15, 15, 15, 24, 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, 25, 33, 34, 51, 52, 1, 53, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 54, 1, 1, 50, 15, 15, 15, 55, 15, 15, 15, 55, 15, 15, 15, 15, 15, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 56, 57, 1, 1, 1, 1, 40, 1, 1, 40, 1, 1, 1, 25, 33, 34, 51, 52, 41, 58, 1, 1, 1, 1, 1, 1, 59, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 61, 62, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 15, 64, 10, 10, 22, 15, 15, 15, 15, 15, 16, 11, 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, 1, 1, 1, 1, 1, 1, 1, 6, 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, 14, 15, 15, 15, 15, 15, 15, 15, 32, 1, 1, 1, 1, 1, 1, 65, 66, 37, 10, 10, 10, 10, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 13, 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, 67, 15, 15, 15, 15, 15, 24, 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, 25, 33, 34, 51, 52, 1, 1, 53, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 54, 1, 1, 1, 67, 15, 15, 15, 68, 15, 15, 15, 68, 15, 15, 15, 15, 15, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69, 70, 1, 1, 1, 1, 40, 56, 57, 40, 1, 1, 25, 33, 34, 51, 52, 1, 58, 58, 1, 1, 1, 1, 1, 1, 59, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 15, 14, 15, 15, 32, 15, 15, 15, 15, 15, 15, 16, 10, 47, 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, 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, 14, 15, 15, 15, 15, 15, 15, 15, 32, 1, 1, 1, 1, 1, 1, 65, 66, 53, 15, 15, 15, 15, 54, 1, 1, 72, 73, 1, 1, 1, 1, 1, 12, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 30, 31, 1, 1, 1, 1, 1, 1, 67, 15, 15, 15, 15, 15, 24, 29, 30, 30, 31, 1, 1, 1, 1, 1, 1, 29, 30, 30, 31, 1, 1, 1, 1, 1, 1, 29, 30, 31, 1, 1, 1, 29, 30, 30, 31, 1, 25, 33, 34, 51, 52, 1, 1, 1, 53, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 54, 1, 1, 1, 1, 67, 15, 15, 15, 68, 15, 15, 15, 68, 15, 15, 15, 15, 15, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 30, 31, 1, 1, 1, 1, 29, 30, 31, 1, 1, 69, 70, 1, 1, 1, 1, 40, 69, 70, 40, 1, 25, 33, 34, 51, 52, 1, 1, 74, 74, 1, 1, 1, 1, 1, 1, 59, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 63, 1, 29, 30, 30, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 15, 14, 15, 15, 32, 15, 15, 15, 15, 15, 15, 15, 15, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 30, 30, 31, 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, 29, 30, 30, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 30, 30, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 30, 30, 31, 1, 14, 15, 15, 15, 15, 15, 15, 15, 32, 1, 1, 1, 1, 1, 1, 65, 66, 53, 15, 15, 15, 15, 54, 1, 1, 75, 76, 1, 1, 1, 1, 1, 12, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 23, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 38, 1, 1, 1, 1, 1, 37, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 38, 46, 46, 37, 10, 10, 38, 1, 1, 1, 1, 37, 10, 10, 10, 38, 46, 46, 37, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 23, 15, 15, 15, 15, 16, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 10, 10, 10, 10, 10, 23, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 54, 1, 1, 53, 15, 15, 16, 10, 10, 10, 10, 23, 15, 15, 15, 54, 1, 1, 53, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 54, 1, 1, 53, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 54, 1, 1, 53, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15], - "height":27, - "name":"ShoeBox Tile Grab", - "opacity":1, - "type":"tilelayer", - "visible":true, - "width":320, - "x":0, - "y":0 - }], - "orientation":"orthogonal", - "properties": - { - - }, - "tileheight":16, - "tilesets":[ - { - "firstgid":1, - "image":"super_mario_world-1_yoshis_island-yoshis_island_1(105-map)_bank.png", - "imageheight":112, - "imagewidth":176, - "margin":0, - "name":"super_mario_world-1_yoshis_island-yoshis_island_1(105-map)_bank.png", - "properties": - { - - }, - "spacing":0, - "tileheight":16, - "tilewidth":16 - }], - "tilewidth":16, - "version":1, - "width":320 -} \ No newline at end of file diff --git a/examples/assets/maps/smb_tiles.png b/examples/assets/maps/smb_tiles.png deleted file mode 100644 index 1170296cb2c6f7995e0f6178fb5eebe7b4acc1b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3740 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 literal 0 HcmV?d00001 diff --git a/examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-background)_map.tmx b/examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-background)_map.tmx deleted file mode 100644 index ffcf339d..00000000 --- a/examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-background)_map.tmx +++ /dev/null @@ -1,8650 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-map)_map.tmx b/examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-map)_map.tmx deleted file mode 100644 index e5527527..00000000 --- a/examples/assets/maps/super_mario_world-1_yoshis_island-yoshis_island_1(105-map)_map.tmx +++ /dev/null @@ -1,8650 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/wip/tilemap.js b/examples/wip/tilemap.js index fa6a0844..fef45146 100644 --- a/examples/wip/tilemap.js +++ b/examples/wip/tilemap.js @@ -3,8 +3,8 @@ var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: function preload() { - game.load.tilemap('map', 'assets/maps/mario1.json', null, Phaser.Tilemap.TILED_JSON); - game.load.tileset('tiles', 'assets/maps/mario1.png', 16, 16); + game.load.tilemap('map', 'assets/maps/super_mario.json', null, Phaser.Tilemap.TILED_JSON); + game.load.tileset('tiles', 'assets/maps/super_mario.png', 16, 16); // game.load.tilemap('map', 'assets/maps/newtest.json', null, Phaser.Tilemap.TILED_JSON); // game.load.tileset('tiles', 'assets/maps/ground_1x1.png', 32, 32); @@ -24,16 +24,13 @@ var sprite; function create() { - // game.stage.backgroundColor = '#5c94fc'; - map = game.add.tilemap('map'); - map.setCollisionByIndexRange(80, 97); // mario - map.setCollisionByIndexRange(14, 18); // mario - - - - // map.setCollisionByIndex(1); // newtest + map.setCollisionByIndex(15); + map.setCollisionByIndex(40); + map.setCollisionByIndexRange(14, 16); + map.setCollisionByIndexRange(20, 25); + map.setCollisionByIndexRange(27, 29); @@ -41,6 +38,9 @@ function create() { // Need to get the x,y values working (adjust cameraOffset values) layer = game.add.tilemapLayer(0, 0, 800, 600, 'tiles', map, 0); layer.debug = true; + layer.debugAlpha = 0.3; + + // layer2 = game.add.tilemapLayer(0, 0, 400, 600, null, map, 0); // layer.cameraOffset.x = 400; diff --git a/src/loader/Cache.js b/src/loader/Cache.js index 8db37bb2..0f6c450b 100644 --- a/src/loader/Cache.js +++ b/src/loader/Cache.js @@ -154,20 +154,22 @@ Phaser.Cache.prototype = { * @param {string} key - The unique key by which you will reference this object. * @param {string} url - URL of this tile set file. * @param {object} data - Extra tile set data. - * @param {number} tileWidth - Width of the sprite sheet. - * @param {number} tileHeight - Height of the sprite sheet. - * @param {number} tileMax - How many tiles stored in the sprite sheet. + * @param {number} tileWidth - Width of each single tile in pixels. + * @param {number} tileHeight - Height of each single tile in pixels. * @param {number} [tileMargin=0] - If the tiles have been drawn with a margin, specify the amount here. * @param {number} [tileSpacing=0] - If the tiles have been drawn with spacing between them, specify the amount here. + * @param {number} [rows=-1] - How many tiles are placed horizontally in each row? If -1 it will calculate rows by dividing the image width by tileWidth. + * @param {number} [columns=-1] - How many tiles are placed vertically in each column? If -1 it will calculate columns by dividing the image height by tileHeight. + * @param {number} [total=-1] - The maximum number of tiles to extract from the image. If -1 it will extract `rows * columns` worth. You can also set a value lower than the actual number of tiles. */ - addTileset: function (key, url, data, tileWidth, tileHeight, tileMax, tileMargin, tileSpacing) { + addTileset: function (key, url, data, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, total) { - this._tilesets[key] = { url: url, data: data, tileWidth: tileWidth, tileHeight: tileHeight, tileMargin: tileMargin, tileSpacing: tileSpacing }; + this._tilesets[key] = { url: url, data: data, tileWidth: tileWidth, tileHeight: tileHeight, tileMargin: tileMargin, tileSpacing: tileSpacing, rows: rows, columns: columns, total: total }; PIXI.BaseTextureCache[key] = new PIXI.BaseTexture(data); PIXI.TextureCache[key] = new PIXI.Texture(PIXI.BaseTextureCache[key]); - this._tilesets[key].tileData = Phaser.TilemapParser.tileset(this.game, key, tileWidth, tileHeight, tileMax, tileMargin, tileSpacing); + this._tilesets[key].tileData = Phaser.TilemapParser.tileset(this.game, key, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, total); }, diff --git a/src/loader/Loader.js b/src/loader/Loader.js index feb836ed..4c77aca3 100644 --- a/src/loader/Loader.js +++ b/src/loader/Loader.js @@ -400,18 +400,18 @@ Phaser.Loader.prototype = { * @param {number} [tileSpacing=0] - If the tiles have been drawn with spacing between them, specify the amount here. * @param {number} [rows=-1] - How many tiles are placed horizontally in each row? If -1 it will calculate rows by dividing the image width by tileWidth. * @param {number} [columns=-1] - How many tiles are placed vertically in each column? If -1 it will calculate columns by dividing the image height by tileHeight. - * @param {number} [limit=-1] - The maximum number of tiles to extract from the image. If -1 it will extract rows * columns worth, otherwise you can set a lower limit value. + * @param {number} [total=-1] - The maximum number of tiles to extract from the image. If -1 it will extract `rows * columns` worth. You can also set a value lower than the actual number of tiles. * @return {Phaser.Loader} This Loader instance. */ - tileset: function (key, url, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, limit) { + tileset: function (key, url, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, total) { if (typeof tileMargin === "undefined") { tileMargin = 0; } if (typeof tileSpacing === "undefined") { tileSpacing = 0; } if (typeof rows === "undefined") { rows = -1; } if (typeof columns === "undefined") { columns = -1; } - if (typeof limit === "undefined") { limit = -1; } + if (typeof total === "undefined") { total = -1; } - this.addToFileList('tileset', key, url, { tileWidth: tileWidth, tileHeight: tileHeight, tileMargin: tileMargin, tileSpacing: tileSpacing, rows: rows, columns: columns, limit: limit }); + this.addToFileList('tileset', key, url, { tileWidth: tileWidth, tileHeight: tileHeight, tileMargin: tileMargin, tileSpacing: tileSpacing, rows: rows, columns: columns, total: total }); return this; @@ -963,7 +963,7 @@ Phaser.Loader.prototype = { case 'tileset': - this.game.cache.addTileset(file.key, file.url, file.data, file.tileWidth, file.tileHeight, file.tileMax, file.tileMargin, file.tileSpacing); + this.game.cache.addTileset(file.key, file.url, file.data, file.tileWidth, file.tileHeight, file.tileMargin, file.tileSpacing, file.rows, file.columns, file.total); break; case 'textureatlas': diff --git a/src/tilemap/TilemapLayer.js b/src/tilemap/TilemapLayer.js index 041f9cc2..3db145b1 100644 --- a/src/tilemap/TilemapLayer.js +++ b/src/tilemap/TilemapLayer.js @@ -101,6 +101,12 @@ Phaser.TilemapLayer = function (game, x, y, renderWidth, renderHeight, tileset, */ this.debug = false; + /** + * @property {number} debugAlpha - If debug is true then the tileset is rendered with this alpha level, to make the tile edges clearer. + * @default + */ + this.debugAlpha = 0.5; + /** * @property {number} widthInPixels - Do NOT recommend changing after the map is loaded! * @readonly @@ -791,7 +797,6 @@ Phaser.TilemapLayer.prototype.render = function () { this.dirty = true; } - // if (!this.dirty || !this.tileset || !this.tilemap || !this.visible) if (!this.dirty || !this.tilemap || !this.visible) { return; @@ -800,14 +805,9 @@ Phaser.TilemapLayer.prototype.render = function () { this._prevX = this._dx; this._prevY = this._dy; - // console.log('render', this._x); - this._dx = -(this._x - (this._startX * this.tileWidth)); this._dy = -(this._y - (this._startY * this.tileHeight)); - // this._dx = Math.floor(this._dx); - // this._dy = Math.floor(this._dy); - this._tx = this._dx; this._ty = this._dy; @@ -815,8 +815,7 @@ Phaser.TilemapLayer.prototype.render = function () { if (this.debug) { - this.context.fillStyle = 'rgba(0,255,0,0.3)'; - this.context.strokeStyle = 'rgba(0,255,0,0.9)'; + this.context.globalAlpha = this.debugAlpha; } for (var y = this._startY, lenY = this._startY + this._maxY; y < lenY; y++) @@ -842,45 +841,6 @@ Phaser.TilemapLayer.prototype.render = function () { ); } - if (this.debug) - { - if (tile && (tile.faceTop || tile.faceBottom || tile.faceLeft || tile.faceRight)) - { - this._tx = Math.floor(this._tx); - - // this.context.fillRect(this._tx, this._ty, this.tileWidth, this.tileHeight); - - this.context.beginPath(); - - if (tile.faceTop) - { - this.context.moveTo(this._tx, this._ty); - this.context.lineTo(this._tx + this.tileWidth, this._ty); - } - - if (tile.faceBottom) - { - this.context.moveTo(this._tx, this._ty + this.tileHeight); - this.context.lineTo(this._tx + this.tileWidth, this._ty + this.tileHeight); - } - - if (tile.faceLeft) - { - this.context.moveTo(this._tx, this._ty); - this.context.lineTo(this._tx, this._ty + this.tileHeight); - } - - if (tile.faceRight) - { - this.context.moveTo(this._tx + this.tileWidth, this._ty); - this.context.lineTo(this._tx + this.tileWidth, this._ty + this.tileHeight); - } - - this.context.stroke(); - // this.context.strokeRect(this._tx, this._ty, this.tileWidth, this.tileHeight); - } - } - this._tx += this.tileWidth; } @@ -890,6 +850,12 @@ Phaser.TilemapLayer.prototype.render = function () { } + if (this.debug) + { + this.context.globalAlpha = 1; + this.renderDebug(); + } + // Only needed if running in WebGL, otherwise this array will never get cleared down I don't think! if (this.game.renderType === Phaser.WEBGL) { @@ -907,6 +873,69 @@ Phaser.TilemapLayer.prototype.render = function () { } +Phaser.TilemapLayer.prototype.renderDebug = function () { + + this._tx = this._dx; + this._ty = this._dy; + + this.context.fillStyle = 'rgba(0, 255, 0, 0.3)'; + this.context.strokeStyle = 'rgb(0, 255, 0)'; + + for (var y = this._startY, lenY = this._startY + this._maxY; y < lenY; y++) + { + this._column = this.layer.data[y]; + + for (var x = this._startX, lenX = this._startX + this._maxX; x < lenX; x++) + { + var tile = this._column[x]; + + if (tile && (tile.faceTop || tile.faceBottom || tile.faceLeft || tile.faceRight)) + { + this._tx = Math.floor(this._tx); + + // this.context.fillRect(this._tx, this._ty, this.tileWidth, this.tileHeight); + + this.context.beginPath(); + + if (tile.faceTop) + { + this.context.moveTo(this._tx, this._ty); + this.context.lineTo(this._tx + this.tileWidth, this._ty); + } + + if (tile.faceBottom) + { + this.context.moveTo(this._tx, this._ty + this.tileHeight); + this.context.lineTo(this._tx + this.tileWidth, this._ty + this.tileHeight); + } + + if (tile.faceLeft) + { + this.context.moveTo(this._tx, this._ty); + this.context.lineTo(this._tx, this._ty + this.tileHeight); + } + + if (tile.faceRight) + { + this.context.moveTo(this._tx + this.tileWidth, this._ty); + this.context.lineTo(this._tx + this.tileWidth, this._ty + this.tileHeight); + } + + this.context.stroke(); + // this.context.strokeRect(this._tx, this._ty, this.tileWidth, this.tileHeight); + } + + this._tx += this.tileWidth; + + } + + this._tx = this._dx; + this._ty += this.tileHeight; + + } + +} + /** * Returns the absolute delta x value. * @method Phaser.TilemapLayer#deltaAbsX diff --git a/src/tilemap/TilemapParser.js b/src/tilemap/TilemapParser.js index c989b3d2..64f9da18 100644 --- a/src/tilemap/TilemapParser.js +++ b/src/tilemap/TilemapParser.js @@ -16,46 +16,44 @@ Phaser.TilemapParser = { * @method Phaser.TilemapParser.tileset * @param {Phaser.Game} game - Game reference to the currently running game. * @param {string} key - The Cache key of this tileset. - * @param {number} tileWidth - Width of the sprite sheet. - * @param {number} tileHeight - Height of the sprite sheet. - * @param {number} tileMax - How many tiles stored in the sprite sheet. + * @param {number} tileWidth - Width of each single tile in pixels. + * @param {number} tileHeight - Height of each single tile in pixels. * @param {number} [tileMargin=0] - If the tiles have been drawn with a margin, specify the amount here. * @param {number} [tileSpacing=0] - If the tiles have been drawn with spacing between them, specify the amount here. + * @param {number} [rows=-1] - How many tiles are placed horizontally in each row? If -1 it will calculate rows by dividing the image width by tileWidth. + * @param {number} [columns=-1] - How many tiles are placed vertically in each column? If -1 it will calculate columns by dividing the image height by tileHeight. + * @param {number} [total=-1] - The maximum number of tiles to extract from the image. If -1 it will extract `rows * columns` worth. You can also set a value lower than the actual number of tiles. * @return {Phaser.Tileset} Generated Tileset object. */ - tileset: function (game, key, tileWidth, tileHeight, tileMax, tileMargin, tileSpacing) { + tileset: function (game, key, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, total) { // How big is our image? var img = game.cache.getTilesetImage(key); - if (img == null) + if (img === null) { + console.warn("Phaser.TilemapParser.tileSet: Invalid image key given"); return null; } var width = img.width; var height = img.height; - // If no tile width/height is given, try and figure it out (won't work if the tileset has margin/spacing) - if (tileWidth <= 0) + if (rows === -1) { - tileWidth = Math.floor(-width / Math.min(-1, tileWidth)); + rows = Math.round(width / tileWidth); } - if (tileHeight <= 0) + if (columns === -1) { - tileHeight = Math.floor(-height / Math.min(-1, tileHeight)); + columns = Math.round(height / tileHeight); } - var row = Math.round(width / tileWidth); - var column = Math.round(height / tileHeight); - var total = row * column; + if (total === -1) + { + total = rows * columns; + } - if (tileMax !== -1) - { - total = tileMax; - } - // Zero or smaller than tile sizes? if (width === 0 || height === 0 || width < tileWidth || height < tileHeight || total === 0) { @@ -63,11 +61,7 @@ Phaser.TilemapParser = { return null; } - //Phaser.Tileset = function (image, key, total, tileWidth, tileHeight, firstgid, tileMargin, tileSpacing) { - return new Phaser.Tileset(img, key, total, tileWidth, tileHeight, 1, tileMargin, tileSpacing); - - // tileset.build(); - // return tileset; + return new Phaser.Tileset(img, key, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, total); }, diff --git a/src/tilemap/Tileset.js b/src/tilemap/Tileset.js index fa59c1b9..d918c267 100644 --- a/src/tilemap/Tileset.js +++ b/src/tilemap/Tileset.js @@ -6,23 +6,21 @@ /** * A Tile set is a combination of an image containing the tiles and collision data per tile. +* You should not normally instantiate this class directly. * * @class Phaser.Tileset * @constructor * @param {Image} image - The Image object from the Cache. * @param {string} key - The key of the tileset in the cache. -* @param {number} total - The total number of tiles in the tilesheet. -* @param {number} tileWidth - The width of the tile in pixels. -* @param {number} tileHeight - The height of the tile in pixels. -* @param {number} [firstgid=0] - The first index number (as specified by Tiled, otherwise set to zero) -* @param {number} [tileMargin=0] - The margin around the tiles in the sheet. -* @param {number} [tileSpacing=0] - The spacing between the tiles in the sheet. +* @param {number} tileWidth - Width of each tile in pixels. +* @param {number} tileHeight - Height of each tile in pixels. +* @param {number} tileMargin - The amount of margin around the tilesheet. +* @param {number} tileSpacing - The amount of spacing between each tile in the sheet. +* @param {number} rows - How many tiles are placed horizontally in each row. +* @param {number} columns - How many tiles are placed vertically in each column. +* @param {number} total - The maximum number of tiles to extract from the image. */ -Phaser.Tileset = function (image, key, total, tileWidth, tileHeight, firstgid, tileMargin, tileSpacing) { - - if (typeof firstgid === "undefined") { firstgid = 0; } - if (typeof tileMargin === "undefined") { tileMargin = 0; } - if (typeof tileSpacing === "undefined") { tileSpacing = 0; } +Phaser.Tileset = function (image, key, tileWidth, tileHeight, tileMargin, tileSpacing, rows, columns, total) { /** * @property {string} key - The cache ID. @@ -34,15 +32,26 @@ Phaser.Tileset = function (image, key, total, tileWidth, tileHeight, firstgid, t */ this.image = image; + /** + * @property {number} rows - The number of rows in the tile sheet. + */ + this.rows = rows; + + /** + * @property {number} columns - The number of columns in the tile sheet. + */ + this.columns = columns; + /** * @property {number} total - The total number of tiles in the tilesheet. */ this.total = total; /** - * @property {number} firstgid - The total number of tiles in the tilesheet. + * @property {number} firstgid - The Tiled firstgid value. + * @default */ - this.firstgid = firstgid; + this.firstgid = 1; /** * @property {number} tileWidth - The width of a tile in pixels. @@ -76,7 +85,7 @@ Phaser.Tileset = function (image, key, total, tileWidth, tileHeight, firstgid, t Phaser.Tileset.prototype = { /** - * Builds the tile data + * Builds the tileset data. * * @method Phaser.Tileset#build */ @@ -85,6 +94,12 @@ Phaser.Tileset.prototype = { var x = this.tileMargin; var y = this.tileMargin; + var count = 0; + var countX = 0; + var countY = 0; + + console.log('Building tileset', this.rows, 'x', this.columns, 'total', this.total); + for (var i = this.firstgid; i < this.firstgid + this.total; i++) { // Can add extra properties here as needed @@ -92,14 +107,31 @@ Phaser.Tileset.prototype = { x += this.tileWidth + this.tileSpacing; - if (x === this.image.width) + count++; + + if (count === this.total) + { + break; + } + + countX++; + + if (countX === this.rows) { x = this.tileMargin; y += this.tileHeight + this.tileSpacing; + + countX = 0; + countY++; + + if (countY === this.columns) + { + break; + } } } - // console.table(this.tiles); + console.table(this.tiles); },