From ad42dbb8148f97318a2f6505d28454b11f9db869 Mon Sep 17 00:00:00 2001 From: Per Lindgren <per.lindgren@ltu.se> Date: Sun, 1 Aug 2021 19:12:27 +0200 Subject: [PATCH] wip --- Cargo.toml | 5 + README.md | 15 ++- assets/tiles_packed.png | Bin 0 -> 5811 bytes assets/tmap.tmx | 262 ++++++++++++++++++++++++++++++++++++++++ assets/tmap.tsx | 4 + src/main.rs | 114 ++++++++++++++++- 6 files changed, 394 insertions(+), 6 deletions(-) create mode 100644 assets/tiles_packed.png create mode 100644 assets/tmap.tmx create mode 100644 assets/tmap.tsx diff --git a/Cargo.toml b/Cargo.toml index 7ab9e06..ca91611 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,4 +7,9 @@ edition = "2018" [dependencies] bevy = { version = "0.5.0", features = ["dynamic"] } +bevy_ecs_tilemap = { git = "https://github.com/StarArawn/bevy_ecs_tilemap", version = "0.4.0", features = ["tiled_map"]} +rand = "0.8.4" +env_logger = "0.8" +log = "0.4" + # bevy = { version = "0.5.0" } \ No newline at end of file diff --git a/README.md b/README.md index 345cd1b..8fbd720 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,27 @@ A small example of sprite animation. Tested under linux (arch) and win10. - Rust toolchain with nightly (for faster builds) +Tested mainly under win10. + ## Usage > cargo run --release +## Key dependencies +- [bevy](https://www.bevy.com/) +- [bevy_esc_tilemap](https://github.com/StarArawn/bevy_ecs_tilemap) + ## Assets -- [bevy](https://www.bevy.com/) - [Zombie sprite sheet](https://www.kenney.nl/assets/toon-characters-1) +- [Tiles](https://kenney.nl/assets/pixel-platformer) + +## Tools + +Tile map created with [tiled](https://www.mapeditor.org/) + +## Design + ## License diff --git a/assets/tiles_packed.png b/assets/tiles_packed.png new file mode 100644 index 0000000000000000000000000000000000000000..0da8986c64fcb474d0ec7c9662d813411b1db15a GIT binary patch literal 5811 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 literal 0 HcmV?d00001 diff --git a/assets/tmap.tmx b/assets/tmap.tmx new file mode 100644 index 0000000..44f6ad9 --- /dev/null +++ b/assets/tmap.tmx @@ -0,0 +1,262 @@ +<?xml version="1.0" encoding="UTF-8"?> +<map version="1.5" tiledversion="1.7.1" orientation="orthogonal" renderorder="right-down" width="60" height="60" tilewidth="18" tileheight="18" infinite="0" nextlayerid="5" nextobjectid="1"> + <tileset firstgid="1" name="tiles_packed" tilewidth="18" tileheight="18" tilecount="180" columns="20"> + <image source="tiles_packed.png" trans="000000" width="360" height="162"/> + </tileset> + <layer id="4" name="sky" width="60" height="60"> + <data encoding="csv"> +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741979,1073741979,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741978,1073741979,1073741979,157,157,1073741979,1073741979,1073741979,1073741980,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741978,157,157,157,157,157,157,157,157,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,155,157,157,157,157,157,156,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,155,155,155,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1073741979,1073741979,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,1073741978,1073741979,1073741979,157,157,1073741979,1073741979,1073741979,1073741980,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1073741978,157,157,157,157,157,157,157,157,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,154,155,157,157,157,157,157,156,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,154,155,155,155,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +</data> + </layer> + <layer id="3" name="background" width="60" height="60"> + <data encoding="csv"> +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,125,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,0,128,0,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74, +0,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,69,0,125,2147483774,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +54,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +74,74,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +74,74,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +</data> + </layer> + <layer id="1" name="playground" width="60" height="60"> + <data encoding="csv"> +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,49,51,69,0,0,22,23,23,23,23,23,23,23,23,23,23,24,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,50,50,51,0,0,122,123,123,123,123,123,123,123,123,123,6,124,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,30,0,0,142,143,6,123,123,123,123,123,123,123,123,124,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,30,108,0,0,0,122,123,25,30,123,123,123,123,123,124,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,63,63,63,63,63,124,0,0,62,63,63,30,0,122,25,25,123,123,123,123,123,123,124,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,26,123,123,123,123,124,0,0,122,26,30,0,0,122,26,123,5,5,123,26,25,25,25,63,63,63,63,23,23,23,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,26,26,26,25,26,124,0,0,122,30,0,0,62,26,26,123,26,5,5,123,26,26,26,26,26,26,25,25,25,25,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,123,26,26,26,25,25,124,0,0,30,0,0,62,26,26,123,123,26,26,5,5,26,26,26,26,26,26,26,26,26,26,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,123,26,26,123,123,25,124,0,0,0,0,62,123,123,26,123,26,5,25,25,5,5,123,123,123,26,26,26,26,26,26,0, +0,0,0,0,0,0,62,63,63,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,122,123,26,5,123,123,25,124,0,0,0,62,123,5,123,123,30,26,123,123,123,123,5,26,26,26,26,123,123,26,26,26,0, +0,0,0,0,0,0,122,123,123,123,124,0,0,0,0,0,0,0,0,0,0,0,42,43,43,44,0,122,123,26,26,123,30,123,124,0,0,62,25,25,123,123,26,123,123,123,26,26,26,123,26,26,26,26,26,123,26,26,26,0, +0,0,0,0,0,0,122,123,123,123,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,123,26,123,123,26,26,25,63,63,5,5,25,25,123,123,123,25,26,26,26,26,123,26,26,26,26,26,123,26,26,26,0, +0,0,0,0,0,0,122,123,123,123,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,26,26,123,123,5,5,26,123,26,123,123,26,123,123,123,5,26,26,26,26,26,30,123,26,26,26,26,123,26,26,26,26, +0,0,0,0,0,0,122,123,123,123,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,26,26,123,26,26,26,123,123,26,30,123,123,123,26,26,123,123,123,26,26,26,26,123,26,26,123,123,123,26,26,26,26, +0,0,0,62,63,63,123,123,123,123,123,23,23,23,23,24,0,0,0,0,0,0,0,0,0,0,0,122,26,26,123,26,26,26,26,26,26,26,26,26,123,26,26,26,26,123,123,26,26,26,123,123,123,123,26,26,26,26,26,26, +0,0,0,122,123,123,123,123,123,123,123,123,123,123,123,123,30,30,30,30,30,30,30,30,30,31,30,123,26,26,123,123,123,123,123,123,26,123,123,5,5,123,5,123,123,123,123,26,26,26,26,26,26,26,26,26,26,26,26,26, +0,0,0,122,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,26,26,123,123,123,123,26,26,26,26,26,26,26,26,5,26,5,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26 +</data> + </layer> + <layer id="2" name="foreground" width="60" height="60" parallaxx="2"> + <data encoding="csv"> +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,39,37,39,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,39,18,39,19,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,19,19,20,0,0,0,0,0,0,0,0,0,38,39,38,18,19,39,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,18,60,39,39,20,0,0,0,0,0,0,0,0,38,18,39,39,39,60,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,18,39,39,39,20,39,20,0,0,0,0,0,0,0,58,38,18,39,39,39,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,58,39,58,39,39,39,40,0,0,0,0,0,0,0,0,58,39,60,39,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,38,39,58,39,60,60,0,0,0,0,0,0,0,0,0,58,98,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,58,39,39,39,60,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,58,98,60,0,0,0,0,0,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,99,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,99,118,120,2147483747,0,0,0,0,0,0,0,0,0,0,0,139,2147483747,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,20,0,0,18,39,18,39,20,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,139,2147483747,0,0,0,0,0,0,0,0,0,0,0,0,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,39,19,19,39,18,39,20,39,20,0,0,18,19,19,20,0,0,0,0,0,0, +0,0,0,0,138,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,39,20,39,39,39,39,39,39,39,39,19,19,39,20,39,39,20,0,0,0,0,0 +</data> + </layer> +</map> diff --git a/assets/tmap.tsx b/assets/tmap.tsx new file mode 100644 index 0000000..dd8d861 --- /dev/null +++ b/assets/tmap.tsx @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tileset version="1.5" tiledversion="1.7.1" name="tiles_packed" tilewidth="16" tileheight="16" tilecount="220" columns="22"> + <image source="tiles_packed.png" trans="000000" width="360" height="162"/> +</tileset> diff --git a/src/main.rs b/src/main.rs index 11e983a..ed11af3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,20 @@ #![allow(unused)] -use bevy::{core::FixedTimestep, prelude::*}; +use bevy::{ + core::FixedTimestep, + prelude::*, + render::{camera::Camera, texture::FilterMode}, +}; +use bevy_ecs_tilemap::{prelude::*, MapQuery}; use std::f32::consts::PI; const PLAYER_SHEET: &str = "character_zombie_sheet.png"; fn main() { + env_logger::Builder::from_default_env() + .filter_level(log::LevelFilter::Info) + .init(); + App::build() - .insert_resource(ClearColor(Color::rgb(0.04, 0.04, 0.04))) + .insert_resource(ClearColor(Color::rgb(0.0, 0.0, 0.0))) .insert_resource(WindowDescriptor { title: "My Little Zombie".to_string(), width: 1920., @@ -15,16 +24,38 @@ fn main() { // resizable: false, ..Default::default() }) + .add_plugins(DefaultPlugins) + .add_plugin(TilemapPlugin) + .add_plugin(TiledMapPlugin) .add_startup_system(setup.system()) .add_system_set( SystemSet::new() .with_run_criteria(FixedTimestep::step(1.0 / 60.0)) - .with_system(player_movement.system()), + .with_system(player_movement.system()) + .with_system(camera.system()) + .with_system(parallax.system()), ) - .add_plugins(DefaultPlugins) + .add_system(set_texture_filters_to_nearest.system()) .run(); } +fn set_texture_filters_to_nearest( + mut texture_events: EventReader<AssetEvent<Texture>>, + mut textures: ResMut<Assets<Texture>>, +) { + // quick and dirty, run this for all textures anytime a texture is created. + for event in texture_events.iter() { + match event { + AssetEvent::Created { handle } => { + if let Some(mut texture) = textures.get_mut(handle) { + texture.sampler.min_filter = FilterMode::Nearest; + } + } + _ => (), + } + } +} + fn setup( mut commands: Commands, asset_server: Res<AssetServer>, @@ -34,8 +65,24 @@ fn setup( ) { let mut window = windows.get_primary_mut().unwrap(); commands.spawn_bundle(OrthographicCameraBundle::new_2d()); - let bottom = -window.height() / 2.0; + + // load the tile map + let handle: Handle<TiledMap> = asset_server.load("tmap.tmx"); + let map_entity = commands.spawn().id(); + commands.entity(map_entity).insert_bundle(TiledMapBundle { + tiled_map: handle, + map: Map::new(0u16, map_entity), + + transform: Transform { + translation: Vec3::new(0., bottom, 1.0), + scale: Vec3::new(4.0, 4.0, 1.0), + ..Default::default() + }, + + ..Default::default() + }); + let texture_handle = asset_server.load(PLAYER_SHEET); let texture_atlas = TextureAtlas::from_grid(texture_handle, Vec2::new(96.0, 128.0), 9, 5); let atlas_handle = texture_atlases.add(texture_atlas); @@ -174,3 +221,60 @@ fn player_movement( transform.translation.x += dir; } } + +// A simple camera system for moving and zooming the camera. +pub fn camera( + time: Res<Time>, + keyboard_input: Res<Input<KeyCode>>, + mut query: Query<&mut Transform, With<Camera>>, +) { + // println!("camera"); + for mut transform in query.iter_mut() { + // print!("-"); + let mut direction = Vec3::ZERO; + let scale = transform.scale.x; + + if keyboard_input.pressed(KeyCode::A) { + direction -= Vec3::new(1.0, 0.0, 0.0); + } + + if keyboard_input.pressed(KeyCode::D) { + direction += Vec3::new(1.0, 0.0, 0.0); + } + + if keyboard_input.pressed(KeyCode::W) { + direction += Vec3::new(0.0, 1.0, 0.0); + } + + if keyboard_input.pressed(KeyCode::S) { + direction -= Vec3::new(0.0, 1.0, 0.0); + } + + if keyboard_input.pressed(KeyCode::Z) { + let scale = scale + 0.1; + transform.scale = Vec3::splat(scale); + } + + if keyboard_input.pressed(KeyCode::X) { + let scale = scale - 0.1; + transform.scale = Vec3::splat(scale); + } + + if transform.scale.x < 1.0 { + transform.scale = Vec3::splat(1.0) + } + + transform.translation += time.delta_seconds() * direction * 500.; + } +} + +// parallaxing +pub fn parallax(mut query: Query<(&mut Transform, &Layer)>) { + println!("parallax"); + for (mut _transform, layer) in query.iter_mut() { + print!( + "layer_id {:?}, map_id {:?}", + layer.settings.layer_id, layer.settings.map_id + ); + } +} -- GitLab