From 77eb807d8fafe21a0e67dd2e1a6d5f9513ca9a46 Mon Sep 17 00:00:00 2001 From: Mick Harrigan Date: Sat, 2 Dec 2023 11:59:25 -0800 Subject: [PATCH 01/49] Added in the entity tracking system to the main exe --- Cargo.lock | 1394 ++++++++++++++++++++++++------ Cargo.toml | 1 + assets/fonts/FiraMono-Medium.ttf | Bin 0 -> 173516 bytes src/lib.rs | 45 +- 4 files changed, 1164 insertions(+), 276 deletions(-) create mode 100644 assets/fonts/FiraMono-Medium.ttf diff --git a/Cargo.lock b/Cargo.lock index 2a428ca..43ed78b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,19 +18,46 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" +[[package]] +name = "accesskit" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76eb1adf08c5bcaa8490b9851fd53cca27fa9880076f178ea9d29f05196728a8" + [[package]] name = "accesskit" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca8410747ed85a17c4a1e9ed3f5a74d3e7bdcc876cf9a18ff40ae21d645997b2" +[[package]] +name = "accesskit_consumer" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04bb4d9e4772fe0d47df57d0d5dbe5d85dd05e2f37ae1ddb6b105e76be58fb00" +dependencies = [ + "accesskit 0.11.2", +] + [[package]] name = "accesskit_consumer" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" dependencies = [ - "accesskit", + "accesskit 0.12.1", +] + +[[package]] +name = "accesskit_macos" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134d0acf6acb667c89d3332999b1a5df4edbc8d6113910f392ebb73f2b03bb56" +dependencies = [ + "accesskit 0.11.2", + "accesskit_consumer 0.15.2", + "objc2", + "once_cell", ] [[package]] @@ -39,35 +66,61 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" dependencies = [ - "accesskit", - "accesskit_consumer", + "accesskit 0.12.1", + "accesskit_consumer 0.16.1", "objc2", "once_cell", ] +[[package]] +name = "accesskit_windows" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eac0a7f2d7cd7a93b938af401d3d8e8b7094217989a7c25c55a953023436e31" +dependencies = [ + "accesskit 0.11.2", + "accesskit_consumer 0.15.2", + "arrayvec", + "once_cell", + "paste", + "windows 0.48.0", +] + [[package]] name = "accesskit_windows" version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" dependencies = [ - "accesskit", - "accesskit_consumer", + "accesskit 0.12.1", + "accesskit_consumer 0.16.1", "once_cell", "paste", "static_assertions", "windows 0.48.0", ] +[[package]] +name = "accesskit_winit" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "825d23acee1bd6d25cbaa3ca6ed6e73faf24122a774ec33d52c5c86c6ab423c0" +dependencies = [ + "accesskit 0.11.2", + "accesskit_macos 0.9.0", + "accesskit_windows 0.14.3", + "winit", +] + [[package]] name = "accesskit_winit" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88e39fcec2e10971e188730b7a76bab60647dacc973d4591855ebebcadfaa738" dependencies = [ - "accesskit", - "accesskit_macos", - "accesskit_windows", + "accesskit 0.12.1", + "accesskit_macos 0.10.1", + "accesskit_windows 0.15.1", "winit", ] @@ -208,7 +261,7 @@ version = "0.37.3+1.3.251" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" dependencies = [ - "libloading", + "libloading 0.7.4", ] [[package]] @@ -318,6 +371,15 @@ version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +[[package]] +name = "bevy" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91c6d3ec4f89e85294dc97334c5b271ddc301fdf67ac9bb994fe44d9273e6ed7" +dependencies = [ + "bevy_internal 0.11.3", +] + [[package]] name = "bevy" version = "0.12.0" @@ -325,7 +387,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "329e344f835f5a9a4c46a6d1d57371f726aa2c482d1bd669b2b9c4eb1ee91fd7" dependencies = [ "bevy_dylib", - "bevy_internal", + "bevy_internal 0.12.0", +] + +[[package]] +name = "bevy_a11y" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "132c9e35a77c5395951f6d25fa2c52ee92296353426df4f961e60f3ff47e2e42" +dependencies = [ + "accesskit 0.11.2", + "bevy_app 0.11.3", + "bevy_derive 0.11.3", + "bevy_ecs 0.11.3", ] [[package]] @@ -334,10 +408,10 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271b812e5734f5056a400f7d64592dd82d6c0e6179389c2f066f433ab8bc7692" dependencies = [ - "accesskit", - "bevy_app", - "bevy_derive", - "bevy_ecs", + "accesskit 0.12.1", + "bevy_app 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", ] [[package]] @@ -346,17 +420,33 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab94187a1253433e14f175293d8a86ec1c2822fda2a17807908f11ec21f45f00" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_core", - "bevy_ecs", - "bevy_hierarchy", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_time", - "bevy_transform", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core 0.12.0", + "bevy_ecs 0.12.0", + "bevy_hierarchy 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_time 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", +] + +[[package]] +name = "bevy_app" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f557a7d59e1e16892d7544fc37316506ee598cb5310ef0365125a30783c11531" +dependencies = [ + "bevy_derive 0.11.3", + "bevy_ecs 0.11.3", + "bevy_reflect 0.11.3", + "bevy_tasks 0.11.3", + "bevy_utils 0.11.3", + "downcast-rs", + "wasm-bindgen", + "web-sys", ] [[package]] @@ -365,13 +455,41 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "172d532ea812e5954fa814dae003c207f2a0b20c6e50431787c94a7159677ece" dependencies = [ - "bevy_derive", - "bevy_ecs", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_reflect 0.12.0", + "bevy_tasks 0.12.0", + "bevy_utils 0.12.0", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9714af523da4cdf58c42a317e5ed40349708ad954a18533991fd64c8ae0a6f68" +dependencies = [ + "anyhow", + "async-channel", + "bevy_app 0.11.3", + "bevy_diagnostic 0.11.3", + "bevy_ecs 0.11.3", + "bevy_log 0.11.3", + "bevy_reflect 0.11.3", + "bevy_tasks 0.11.3", + "bevy_utils 0.11.3", + "bevy_winit 0.11.3", + "crossbeam-channel", "downcast-rs", + "fastrand 1.9.0", + "js-sys", + "parking_lot", + "serde", + "thiserror", "wasm-bindgen", + "wasm-bindgen-futures", "web-sys", ] @@ -384,14 +502,14 @@ dependencies = [ "async-broadcast", "async-fs", "async-lock", - "bevy_app", + "bevy_app 0.12.0", "bevy_asset_macros", - "bevy_ecs", - "bevy_log", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", - "bevy_winit", + "bevy_ecs 0.12.0", + "bevy_log 0.12.0", + "bevy_reflect 0.12.0", + "bevy_tasks 0.12.0", + "bevy_utils 0.12.0", + "bevy_winit 0.12.0", "blake3", "crossbeam-channel", "downcast-rs", @@ -414,7 +532,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d797cc907daa293a2776fea1517ed79f9e54d9901dfd35410743cbe536d4c2b" dependencies = [ "anyhow", - "bevy", + "bevy 0.12.0", "bevy_asset_loader_derive", "path-slash", ] @@ -436,72 +554,134 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b3245193e90fc8abcf1059a467cb224501dcda083d114c67c10ac66b7171e3a" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.38", ] +[[package]] +name = "bevy_core" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d5272321be5fcf5ce2fb16023bc825bb10dfcb71611117296537181ce950f48" +dependencies = [ + "bevy_app 0.11.3", + "bevy_ecs 0.11.3", + "bevy_math 0.11.3", + "bevy_reflect 0.11.3", + "bevy_tasks 0.11.3", + "bevy_utils 0.11.3", + "bytemuck", +] + [[package]] name = "bevy_core" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "025e6800b73048092a55c3611e9327ad4c4c17b60517ec1c0086bb40b4b19ea8" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_ecs 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_tasks 0.12.0", + "bevy_utils 0.12.0", "bytemuck", ] +[[package]] +name = "bevy_core_pipeline" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67382fa9c96ce4f4e5833ed7cedd9886844a8f3284b4a717bd4ac738dcdea0c3" +dependencies = [ + "bevy_app 0.11.3", + "bevy_asset 0.11.3", + "bevy_core 0.11.3", + "bevy_derive 0.11.3", + "bevy_ecs 0.11.3", + "bevy_math 0.11.3", + "bevy_reflect 0.11.3", + "bevy_render 0.11.3", + "bevy_transform 0.11.3", + "bevy_utils 0.11.3", + "bitflags 2.4.1", + "radsort", + "serde", +] + [[package]] name = "bevy_core_pipeline" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e4b08a2d53ba62d9ec1fca3f7f4e0f556e9f59e1c8e63a4b7c2a18c0701152c" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_core", - "bevy_derive", - "bevy_ecs", - "bevy_log", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_log 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", "bitflags 2.4.1", "radsort", "serde", ] +[[package]] +name = "bevy_derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44e4e2784a81430199e4157e02903a987a32127c773985506f020e7d501b62e" +dependencies = [ + "bevy_macro_utils 0.11.3", + "quote", + "syn 2.0.38", +] + [[package]] name = "bevy_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24bf40259be12a1a24d9fd536f5ff18d31eeb5665b77e2732899783be6edc5d6" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "quote", "syn 2.0.38", ] +[[package]] +name = "bevy_diagnostic" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6babb230dc383c98fdfc9603e3a7a2a49e1e2879dbe8291059ef37dca897932e" +dependencies = [ + "bevy_app 0.11.3", + "bevy_core 0.11.3", + "bevy_ecs 0.11.3", + "bevy_log 0.11.3", + "bevy_time 0.11.3", + "bevy_utils 0.11.3", + "sysinfo", +] + [[package]] name = "bevy_diagnostic" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41b5a99a9fb6cd7d1eb1714fad193944a0317f0887a15cccb8309c8d37951132" dependencies = [ - "bevy_app", - "bevy_core", - "bevy_ecs", - "bevy_log", - "bevy_time", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_core 0.12.0", + "bevy_ecs 0.12.0", + "bevy_log 0.12.0", + "bevy_time 0.12.0", + "bevy_utils 0.12.0", "sysinfo", ] @@ -511,7 +691,28 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "766980812401453563a7490a351dab88e8f53e62ff37e27a5236e6893deedc5a" dependencies = [ - "bevy_internal", + "bevy_internal 0.12.0", +] + +[[package]] +name = "bevy_ecs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266144b36df7e834d5198049e037ecdf2a2310a76ce39ed937d1b0a6a2c4e8c6" +dependencies = [ + "async-channel", + "bevy_ecs_macros 0.11.3", + "bevy_ptr 0.11.3", + "bevy_reflect 0.11.3", + "bevy_tasks 0.11.3", + "bevy_utils 0.11.3", + "downcast-rs", + "event-listener", + "fixedbitset", + "rustc-hash", + "serde", + "thiserror", + "thread_local", ] [[package]] @@ -521,11 +722,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae11a1f467c372b50e9d4b55e78370f5420c9db7416200cc441cc84f08174dd3" dependencies = [ "async-channel", - "bevy_ecs_macros", - "bevy_ptr", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_ecs_macros 0.12.0", + "bevy_ptr 0.12.0", + "bevy_reflect 0.12.0", + "bevy_tasks 0.12.0", + "bevy_utils 0.12.0", "downcast-rs", "event-listener", "fixedbitset", @@ -535,25 +736,87 @@ dependencies = [ "thread_local", ] +[[package]] +name = "bevy_ecs_ldtk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037f862d30f5b74e3b5136acf435c8210b8e8f00c354d7b40234464f04f59fd7" +dependencies = [ + "anyhow", + "bevy 0.11.3", + "bevy_ecs_ldtk_macros", + "bevy_ecs_tilemap", + "hex", + "paste", + "regex", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "bevy_ecs_ldtk_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84deb3aba5b9586df80f4f2a72510d586a12f936df71cebbe97b430a479379f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7157a9c3be038d5008ee3f114feb6cf6b39c1d3d32ee21a7cacb8f81fccdfa80" +dependencies = [ + "bevy_macro_utils 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "bevy_ecs_macros" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f642c2b67c4d0daf8edf15074f6351457eb487a34b3de1290c760d8f3ac9ec16" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.38", ] +[[package]] +name = "bevy_ecs_tilemap" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b64cb7171c43b30e9fa75cd8748911e06139ff45a04fa4be881201079fee295" +dependencies = [ + "bevy 0.11.3", + "log", + "regex", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0ac0f55ad6bca1be7b0f35bbd5fc95ed3d31e4e9db158fee8e5327f59006001" +dependencies = [ + "bevy_macro_utils 0.11.3", + "encase_derive_impl", +] + [[package]] name = "bevy_encase_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65b9fb5a62c4e3ab70caaa839470d35fa932001b1b34b08bc7f7f1909bd2b3a7" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "encase_derive_impl", ] @@ -561,8 +824,9 @@ dependencies = [ name = "bevy_game" version = "0.1.0" dependencies = [ - "bevy", + "bevy 0.12.0", "bevy_asset_loader", + "bevy_ecs_ldtk", "bevy_kira_audio", "embed-resource", "image", @@ -577,34 +841,53 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad31cc2c84315e0759d793d6c5bcb7d8789bbc16359c98d1b766e708c1bbae49" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_input", - "bevy_log", - "bevy_time", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_ecs 0.12.0", + "bevy_input 0.12.0", + "bevy_log 0.12.0", + "bevy_time 0.12.0", + "bevy_utils 0.12.0", "gilrs", "thiserror", ] +[[package]] +name = "bevy_gizmos" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e286a3e7276431963f4aa29165ea5429fa7dbbc6d5c5ba0c531e7dd44ecc88a2" +dependencies = [ + "bevy_app 0.11.3", + "bevy_asset 0.11.3", + "bevy_core 0.11.3", + "bevy_core_pipeline 0.11.3", + "bevy_ecs 0.11.3", + "bevy_math 0.11.3", + "bevy_reflect 0.11.3", + "bevy_render 0.11.3", + "bevy_sprite 0.11.3", + "bevy_transform 0.11.3", + "bevy_utils 0.11.3", +] + [[package]] name = "bevy_gizmos" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87d1cc978b91f416b23eb16f00e69f95c3a04582021827d8082e92d4725cc510" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_core", - "bevy_core_pipeline", - "bevy_ecs", - "bevy_math", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core 0.12.0", + "bevy_core_pipeline 0.12.0", + "bevy_ecs 0.12.0", + "bevy_math 0.12.0", "bevy_pbr", - "bevy_reflect", - "bevy_render", - "bevy_sprite", - "bevy_transform", - "bevy_utils", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_sprite 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", ] [[package]] @@ -615,21 +898,21 @@ checksum = "6f933745c0c86e2c07948def581259b466f99708328657054e956275430ccfd7" dependencies = [ "base64 0.13.1", "bevy_animation", - "bevy_app", - "bevy_asset", - "bevy_core", - "bevy_core_pipeline", - "bevy_ecs", - "bevy_hierarchy", - "bevy_log", - "bevy_math", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core 0.12.0", + "bevy_core_pipeline 0.12.0", + "bevy_ecs 0.12.0", + "bevy_hierarchy 0.12.0", + "bevy_log 0.12.0", + "bevy_math 0.12.0", "bevy_pbr", - "bevy_reflect", - "bevy_render", - "bevy_scene", - "bevy_tasks", - "bevy_transform", - "bevy_utils", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_scene 0.12.0", + "bevy_tasks 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", "gltf", "percent-encoding", "serde", @@ -637,71 +920,131 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_hierarchy" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "103f8f58416ac6799b8c7f0b418f1fac9eba44fa924df3b0e16b09256b897e3d" +dependencies = [ + "bevy_app 0.11.3", + "bevy_core 0.11.3", + "bevy_ecs 0.11.3", + "bevy_log 0.11.3", + "bevy_reflect 0.11.3", + "bevy_utils 0.11.3", + "smallvec", +] + [[package]] name = "bevy_hierarchy" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa240011fce8ee23f9b46e5a26a628a31d7860d6d2e4e0e361bb3ea6d5a703" dependencies = [ - "bevy_app", - "bevy_core", - "bevy_ecs", - "bevy_log", - "bevy_reflect", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_core 0.12.0", + "bevy_ecs 0.12.0", + "bevy_log 0.12.0", + "bevy_reflect 0.12.0", + "bevy_utils 0.12.0", "smallvec", ] +[[package]] +name = "bevy_input" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbd935401101ac8003f3c3aea70788c65ad03f7a32716a10608bedda7a648bc" +dependencies = [ + "bevy_app 0.11.3", + "bevy_ecs 0.11.3", + "bevy_math 0.11.3", + "bevy_reflect 0.11.3", + "bevy_utils 0.11.3", + "thiserror", +] + [[package]] name = "bevy_input" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e86e241b3a10b79f65a69205552546723b855d3d4c1bd8261637c076144d32f" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_ecs 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_utils 0.12.0", "thiserror", ] +[[package]] +name = "bevy_internal" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e35a9b2bd29aa784b3cc416bcbf2a298f69f00ca51fd042ea39d9af7fad37e" +dependencies = [ + "bevy_a11y 0.11.3", + "bevy_app 0.11.3", + "bevy_asset 0.11.3", + "bevy_core 0.11.3", + "bevy_core_pipeline 0.11.3", + "bevy_derive 0.11.3", + "bevy_diagnostic 0.11.3", + "bevy_ecs 0.11.3", + "bevy_gizmos 0.11.3", + "bevy_hierarchy 0.11.3", + "bevy_input 0.11.3", + "bevy_log 0.11.3", + "bevy_math 0.11.3", + "bevy_ptr 0.11.3", + "bevy_reflect 0.11.3", + "bevy_render 0.11.3", + "bevy_scene 0.11.3", + "bevy_sprite 0.11.3", + "bevy_tasks 0.11.3", + "bevy_time 0.11.3", + "bevy_transform 0.11.3", + "bevy_utils 0.11.3", + "bevy_window 0.11.3", +] + [[package]] name = "bevy_internal" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55124e486814c4d3632d5cfad9c4f4e46d052c028593ec46fef5bfbfb0f840b1" dependencies = [ - "bevy_a11y", + "bevy_a11y 0.12.0", "bevy_animation", - "bevy_app", - "bevy_asset", - "bevy_core", - "bevy_core_pipeline", - "bevy_derive", - "bevy_diagnostic", - "bevy_ecs", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core 0.12.0", + "bevy_core_pipeline 0.12.0", + "bevy_derive 0.12.0", + "bevy_diagnostic 0.12.0", + "bevy_ecs 0.12.0", "bevy_gilrs", - "bevy_gizmos", + "bevy_gizmos 0.12.0", "bevy_gltf", - "bevy_hierarchy", - "bevy_input", - "bevy_log", - "bevy_math", + "bevy_hierarchy 0.12.0", + "bevy_input 0.12.0", + "bevy_log 0.12.0", + "bevy_math 0.12.0", "bevy_pbr", - "bevy_ptr", - "bevy_reflect", - "bevy_render", - "bevy_scene", - "bevy_sprite", - "bevy_tasks", + "bevy_ptr 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_scene 0.12.0", + "bevy_sprite 0.12.0", + "bevy_tasks 0.12.0", "bevy_text", - "bevy_time", - "bevy_transform", + "bevy_time 0.12.0", + "bevy_transform 0.12.0", "bevy_ui", - "bevy_utils", - "bevy_window", - "bevy_winit", + "bevy_utils 0.12.0", + "bevy_window 0.12.0", + "bevy_winit 0.12.0", ] [[package]] @@ -711,13 +1054,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a9678086759e54871faab0829592423492e19f8de5076127315cf892ae56f33" dependencies = [ "anyhow", - "bevy", + "bevy 0.12.0", "kira", "parking_lot", "thiserror", "uuid", ] +[[package]] +name = "bevy_log" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07dcc615ff4f617b06c3f9522fca3c55d56f9644db293318f8ab68fcdea5d4fe" +dependencies = [ + "android_log-sys", + "bevy_app 0.11.3", + "bevy_ecs 0.11.3", + "bevy_utils 0.11.3", + "console_error_panic_hook", + "tracing-log", + "tracing-subscriber", + "tracing-wasm", +] + [[package]] name = "bevy_log" version = "0.12.0" @@ -725,15 +1084,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "011417debf7868b45932bb97fc0d5bfdeaf9304e324aa94840e2f1e6deeed69d" dependencies = [ "android_log-sys", - "bevy_app", - "bevy_ecs", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_ecs 0.12.0", + "bevy_utils 0.12.0", "console_error_panic_hook", "tracing-log", "tracing-subscriber", "tracing-wasm", ] +[[package]] +name = "bevy_macro_utils" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ddc18d489b4e57832d4958cde7cd2f349f0ad91e5892ac9e2f2ee16546b981" +dependencies = [ + "quote", + "rustc-hash", + "syn 2.0.38", + "toml_edit 0.19.15", +] + [[package]] name = "bevy_macro_utils" version = "0.12.0" @@ -747,6 +1118,16 @@ dependencies = [ "toml_edit 0.20.7", ] +[[package]] +name = "bevy_math" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78286a81fead796dc4b45ab14f4f02fe29a94423d3587bcfef872b2a8e0a474b" +dependencies = [ + "glam", + "serde", +] + [[package]] name = "bevy_math" version = "0.12.0" @@ -757,6 +1138,15 @@ dependencies = [ "serde", ] +[[package]] +name = "bevy_mikktspace" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cfc2a21ea47970a9b1f0f4735af3256a8f204815bd756110051d10f9d909497" +dependencies = [ + "glam", +] + [[package]] name = "bevy_mikktspace" version = "0.12.0" @@ -772,42 +1162,69 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eeb6a35a78d355cc21c10f277dcd171eca65e30a90e76eb89f4dacf606621fe1" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core_pipeline 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", + "bevy_window 0.12.0", "bitflags 2.4.1", "bytemuck", "fixedbitset", - "naga_oil", + "naga_oil 0.10.0", "radsort", "smallvec", "thread_local", ] +[[package]] +name = "bevy_ptr" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c7586401a46f7d8e436028225c1df5288f2e0082d066b247a82466fea155c6" + [[package]] name = "bevy_ptr" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308a02679f6ce21ef71de20fae6d6a2016c07baa21d8e8d0558e6b7851e8adf2" +[[package]] +name = "bevy_reflect" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0778197a1eb3e095a71417c74b7152ede02975cdc95b5ea4ddc5251ed00a2eb5" +dependencies = [ + "bevy_math 0.11.3", + "bevy_ptr 0.11.3", + "bevy_reflect_derive 0.11.3", + "bevy_utils 0.11.3", + "downcast-rs", + "erased-serde", + "glam", + "once_cell", + "parking_lot", + "serde", + "smallvec", + "smol_str", + "thiserror", +] + [[package]] name = "bevy_reflect" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdd56914a8ad57621d7a1a099f7e6b1f7482c9c76cedc9c3d4c175a203939c5d" dependencies = [ - "bevy_math", - "bevy_ptr", - "bevy_reflect_derive", - "bevy_utils", + "bevy_math 0.12.0", + "bevy_ptr 0.12.0", + "bevy_reflect_derive 0.12.0", + "bevy_utils 0.12.0", "downcast-rs", "erased-serde", "glam", @@ -817,19 +1234,81 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_reflect_derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "342a4b2d09db22c48607d23ad59a056aff1ee004549050a51d490d375ba29528" +dependencies = [ + "bevy_macro_utils 0.11.3", + "bit-set", + "proc-macro2", + "quote", + "syn 2.0.38", + "uuid", +] + [[package]] name = "bevy_reflect_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25f627907c40ac552f798423447fc331fc1ddacd94c5f7a2a70942eb06bc8447" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.38", "uuid", ] +[[package]] +name = "bevy_render" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39df4824b760928c27afc7b00fb649c7a63c9d76661ab014ff5c86537ee906cb" +dependencies = [ + "anyhow", + "async-channel", + "bevy_app 0.11.3", + "bevy_asset 0.11.3", + "bevy_core 0.11.3", + "bevy_derive 0.11.3", + "bevy_ecs 0.11.3", + "bevy_encase_derive 0.11.3", + "bevy_hierarchy 0.11.3", + "bevy_log 0.11.3", + "bevy_math 0.11.3", + "bevy_mikktspace 0.11.3", + "bevy_reflect 0.11.3", + "bevy_render_macros 0.11.3", + "bevy_tasks 0.11.3", + "bevy_time 0.11.3", + "bevy_transform 0.11.3", + "bevy_utils 0.11.3", + "bevy_window 0.11.3", + "bitflags 2.4.1", + "bytemuck", + "codespan-reporting", + "downcast-rs", + "encase", + "futures-lite", + "hexasphere", + "image", + "js-sys", + "naga 0.12.3", + "naga_oil 0.8.2", + "parking_lot", + "regex", + "serde", + "smallvec", + "thiserror", + "thread_local", + "wasm-bindgen", + "web-sys", + "wgpu 0.16.3", + "wgpu-hal 0.16.2", +] + [[package]] name = "bevy_render" version = "0.12.0" @@ -837,23 +1316,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90d777f4c51bd58e9e40777c6cb8dde0778df7e2c5298b3f9e3455bd12a9856c" dependencies = [ "async-channel", - "bevy_app", - "bevy_asset", - "bevy_core", - "bevy_derive", - "bevy_ecs", - "bevy_encase_derive", - "bevy_hierarchy", - "bevy_log", - "bevy_math", - "bevy_mikktspace", - "bevy_reflect", - "bevy_render_macros", - "bevy_tasks", - "bevy_time", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_encase_derive 0.12.0", + "bevy_hierarchy 0.12.0", + "bevy_log 0.12.0", + "bevy_math 0.12.0", + "bevy_mikktspace 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render_macros 0.12.0", + "bevy_tasks 0.12.0", + "bevy_time 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", + "bevy_window 0.12.0", "bitflags 2.4.1", "bytemuck", "codespan-reporting", @@ -864,8 +1343,8 @@ dependencies = [ "image", "js-sys", "ktx2", - "naga", - "naga_oil", + "naga 0.13.0", + "naga_oil 0.10.0", "ruzstd", "serde", "smallvec", @@ -873,7 +1352,19 @@ dependencies = [ "thread_local", "wasm-bindgen", "web-sys", - "wgpu", + "wgpu 0.17.1", +] + +[[package]] +name = "bevy_render_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd08c740aac73363e32fb45af869b10cec65bcb76fe3e6cd0f8f7eebf4c36c9" +dependencies = [ + "bevy_macro_utils 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -882,50 +1373,97 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35b00c3d0abff94a729460fc9aa95c2ceac71b49b3041166bb5ba3098e9657e7" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.38", ] +[[package]] +name = "bevy_scene" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd47e1263506153bef3a8be97fe2d856f206d315668c4f97510ca6cc181d9681" +dependencies = [ + "anyhow", + "bevy_app 0.11.3", + "bevy_asset 0.11.3", + "bevy_derive 0.11.3", + "bevy_ecs 0.11.3", + "bevy_hierarchy 0.11.3", + "bevy_reflect 0.11.3", + "bevy_render 0.11.3", + "bevy_transform 0.11.3", + "bevy_utils 0.11.3", + "ron", + "serde", + "thiserror", + "uuid", +] + [[package]] name = "bevy_scene" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba6294396a6375f0b14341d8003408c10aa040e3f833ac8bd49677170ec55d73" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_derive", - "bevy_ecs", - "bevy_hierarchy", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_hierarchy 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", "ron", "serde", "thiserror", "uuid", ] +[[package]] +name = "bevy_sprite" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a8ca824fad75c6ef74cfbbba0a4ce3ccc435fa23d6bf3f003f260548813397" +dependencies = [ + "bevy_app 0.11.3", + "bevy_asset 0.11.3", + "bevy_core_pipeline 0.11.3", + "bevy_derive 0.11.3", + "bevy_ecs 0.11.3", + "bevy_log 0.11.3", + "bevy_math 0.11.3", + "bevy_reflect 0.11.3", + "bevy_render 0.11.3", + "bevy_transform 0.11.3", + "bevy_utils 0.11.3", + "bitflags 2.4.1", + "bytemuck", + "fixedbitset", + "guillotiere", + "rectangle-pack", + "thiserror", +] + [[package]] name = "bevy_sprite" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4f7d1f88a6e5497fdafd95c20984a1d1b5517bc39d51600b4988cd60c51837a" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", - "bevy_log", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core_pipeline 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_log 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", "bitflags 2.4.1", "bytemuck", "fixedbitset", @@ -935,6 +1473,20 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_tasks" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c73bbb847c83990d3927005090df52f8ac49332e1643d2ad9aac3cd2974e66bf" +dependencies = [ + "async-channel", + "async-executor", + "async-task", + "concurrent-queue", + "futures-lite", + "wasm-bindgen-futures", +] + [[package]] name = "bevy_tasks" version = "0.12.0" @@ -956,46 +1508,73 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c136af700af4f87c94f68d6e019528c371bf09ebf4a8ff7468bb3c73806b34f5" dependencies = [ "ab_glyph", - "bevy_app", - "bevy_asset", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_sprite", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_ecs 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_sprite 0.12.0", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", + "bevy_window 0.12.0", "glyph_brush_layout", "serde", "thiserror", ] +[[package]] +name = "bevy_time" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d58d6dbae9c8225d8c0e0f04d2c5dbb71d22adc01ecd5ab3cebc364139e4a6d" +dependencies = [ + "bevy_app 0.11.3", + "bevy_ecs 0.11.3", + "bevy_reflect 0.11.3", + "bevy_utils 0.11.3", + "crossbeam-channel", + "thiserror", +] + [[package]] name = "bevy_time" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b29709cadf22d318a0b7c79f763e9c5ac414292bd0e850066fa935959021b276" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_reflect", - "bevy_utils", + "bevy_app 0.12.0", + "bevy_ecs 0.12.0", + "bevy_reflect 0.12.0", + "bevy_utils 0.12.0", "crossbeam-channel", "thiserror", ] +[[package]] +name = "bevy_transform" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9b0ac0149a57cd846cb357a35fc99286f9848e53d4481954608ac9552ed2d4" +dependencies = [ + "bevy_app 0.11.3", + "bevy_ecs 0.11.3", + "bevy_hierarchy 0.11.3", + "bevy_math 0.11.3", + "bevy_reflect 0.11.3", +] + [[package]] name = "bevy_transform" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70262c51e915b6224129206d23823364e650cf5eb5f4b6ce3ee379f608c180d2" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_hierarchy", - "bevy_math", - "bevy_reflect", + "bevy_app 0.12.0", + "bevy_ecs 0.12.0", + "bevy_hierarchy 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", "thiserror", ] @@ -1005,23 +1584,23 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd5ecbf2dceaab118769dd870e34d780bfde556af561fd10d8d613b0f237297e" dependencies = [ - "bevy_a11y", - "bevy_app", - "bevy_asset", - "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", - "bevy_hierarchy", - "bevy_input", - "bevy_log", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_sprite", + "bevy_a11y 0.12.0", + "bevy_app 0.12.0", + "bevy_asset 0.12.0", + "bevy_core_pipeline 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_hierarchy 0.12.0", + "bevy_input 0.12.0", + "bevy_log 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_render 0.12.0", + "bevy_sprite 0.12.0", "bevy_text", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_transform 0.12.0", + "bevy_utils 0.12.0", + "bevy_window 0.12.0", "bytemuck", "serde", "smallvec", @@ -1029,6 +1608,23 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_utils" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d9484e32434ea84dc548cff246ce0c6f756c1336f5ea03f24ac120a48595c7" +dependencies = [ + "ahash", + "bevy_utils_proc_macros 0.11.3", + "getrandom", + "hashbrown 0.14.2", + "instant", + "petgraph", + "thiserror", + "tracing", + "uuid", +] + [[package]] name = "bevy_utils" version = "0.12.0" @@ -1036,7 +1632,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8e75d4a34ef0b15dffd1ee9079ef1f0f5139527e192b9d5708b3e158777c753" dependencies = [ "ahash", - "bevy_utils_proc_macros", + "bevy_utils_proc_macros 0.12.0", "getrandom", "hashbrown 0.14.2", "instant", @@ -1047,6 +1643,17 @@ dependencies = [ "uuid", ] +[[package]] +name = "bevy_utils_proc_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5391b242c36f556db01d5891444730c83aa9dd648b6a8fd2b755d22cb3bddb57" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "bevy_utils_proc_macros" version = "0.12.0" @@ -1058,20 +1665,60 @@ dependencies = [ "syn 2.0.38", ] +[[package]] +name = "bevy_window" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd584c0da7c4ada6557b09f57f30fb7cff21ccedc641473fc391574b4c9b7944" +dependencies = [ + "bevy_app 0.11.3", + "bevy_ecs 0.11.3", + "bevy_input 0.11.3", + "bevy_math 0.11.3", + "bevy_reflect 0.11.3", + "bevy_utils 0.11.3", + "raw-window-handle", +] + [[package]] name = "bevy_window" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e60d1830b3fbd7db5bfea7ac9fcd0f5e1d1af88c91ab469e697ab176d8b3140b" dependencies = [ - "bevy_a11y", - "bevy_app", - "bevy_ecs", - "bevy_input", - "bevy_math", - "bevy_reflect", - "bevy_utils", + "bevy_a11y 0.12.0", + "bevy_app 0.12.0", + "bevy_ecs 0.12.0", + "bevy_input 0.12.0", + "bevy_math 0.12.0", + "bevy_reflect 0.12.0", + "bevy_utils 0.12.0", + "raw-window-handle", +] + +[[package]] +name = "bevy_winit" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfdc044abdb95790c20053e6326760f0a2985f0dcd78613d397bf35f16039d53" +dependencies = [ + "accesskit_winit 0.14.4", + "approx", + "bevy_a11y 0.11.3", + "bevy_app 0.11.3", + "bevy_derive 0.11.3", + "bevy_ecs 0.11.3", + "bevy_hierarchy 0.11.3", + "bevy_input 0.11.3", + "bevy_math 0.11.3", + "bevy_tasks 0.11.3", + "bevy_utils 0.11.3", + "bevy_window 0.11.3", + "crossbeam-channel", "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit", ] [[package]] @@ -1080,18 +1727,18 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f8294e78c6a1f9c34d36501a377c5d20bf0fa23a0958187bb270187741448ba" dependencies = [ - "accesskit_winit", + "accesskit_winit 0.15.0", "approx", - "bevy_a11y", - "bevy_app", - "bevy_derive", - "bevy_ecs", - "bevy_hierarchy", - "bevy_input", - "bevy_math", - "bevy_tasks", - "bevy_utils", - "bevy_window", + "bevy_a11y 0.12.0", + "bevy_app 0.12.0", + "bevy_derive 0.12.0", + "bevy_ecs 0.12.0", + "bevy_hierarchy 0.12.0", + "bevy_input 0.12.0", + "bevy_math 0.12.0", + "bevy_tasks 0.12.0", + "bevy_utils 0.12.0", + "bevy_window 0.12.0", "crossbeam-channel", "raw-window-handle", "wasm-bindgen", @@ -1286,7 +1933,7 @@ checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.7.4", ] [[package]] @@ -1480,6 +2127,17 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "d3d12" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" +dependencies = [ + "bitflags 1.3.2", + "libloading 0.7.4", + "winapi", +] + [[package]] name = "d3d12" version = "0.7.0" @@ -1487,7 +2145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" dependencies = [ "bitflags 2.4.1", - "libloading", + "libloading 0.7.4", "winapi", ] @@ -1850,6 +2508,16 @@ dependencies = [ "xi-unicode", ] +[[package]] +name = "gpu-alloc" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22beaafc29b38204457ea030f6fb7a84c9e4dd1b86e311ba0542533453d87f62" +dependencies = [ + "bitflags 1.3.2", + "gpu-alloc-types 0.2.0", +] + [[package]] name = "gpu-alloc" version = "0.6.0" @@ -1857,7 +2525,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ "bitflags 2.4.1", - "gpu-alloc-types", + "gpu-alloc-types 0.3.0", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +dependencies = [ + "bitflags 1.3.2", ] [[package]] @@ -1944,12 +2621,18 @@ dependencies = [ "bitflags 1.3.2", "com-rs", "libc", - "libloading", + "libloading 0.7.4", "thiserror", "widestring", "winapi", ] +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hexasphere" version = "9.1.0" @@ -2128,7 +2811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" dependencies = [ "libc", - "libloading", + "libloading 0.7.4", "pkg-config", ] @@ -2183,6 +2866,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "libloading" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "libudev-sys" version = "0.1.4" @@ -2242,6 +2935,20 @@ version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +[[package]] +name = "metal" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-graphics-types", + "foreign-types 0.3.2", + "log", + "objc", +] + [[package]] name = "metal" version = "0.26.0" @@ -2291,6 +2998,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "naga" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbcc2e0513220fd2b598e6068608d4462db20322c0e77e47f6f488dfcfc279cb" +dependencies = [ + "bit-set", + "bitflags 1.3.2", + "codespan-reporting", + "hexf-parse", + "indexmap 1.9.3", + "log", + "num-traits", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + [[package]] name = "naga" version = "0.13.0" @@ -2312,6 +3040,26 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "naga_oil" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be942a5c21c58b9b0bf4d9b99db3634ddb7a916f8e1d1d0b71820cc4150e56b" +dependencies = [ + "bit-set", + "codespan-reporting", + "data-encoding", + "indexmap 1.9.3", + "naga 0.12.3", + "once_cell", + "regex", + "regex-syntax 0.6.29", + "rustc-hash", + "thiserror", + "tracing", + "unicode-ident", +] + [[package]] name = "naga_oil" version = "0.10.0" @@ -2322,7 +3070,7 @@ dependencies = [ "codespan-reporting", "data-encoding", "indexmap 1.9.3", - "naga", + "naga 0.13.0", "once_cell", "regex", "regex-syntax 0.7.5", @@ -3611,6 +4359,30 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wgpu" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "480c965c9306872eb6255fa55e4b4953be55a8b64d57e61d7ff840d3dcc051cd" +dependencies = [ + "arrayvec", + "cfg-if", + "js-sys", + "log", + "naga 0.12.3", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 0.16.1", + "wgpu-hal 0.16.2", + "wgpu-types 0.16.1", +] + [[package]] name = "wgpu" version = "0.17.1" @@ -3621,7 +4393,7 @@ dependencies = [ "cfg-if", "js-sys", "log", - "naga", + "naga 0.13.0", "parking_lot", "profiling", "raw-window-handle", @@ -3630,9 +4402,32 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", + "wgpu-core 0.17.1", + "wgpu-hal 0.17.2", + "wgpu-types 0.17.0", +] + +[[package]] +name = "wgpu-core" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f478237b4bf0d5b70a39898a66fa67ca3a007d79f2520485b8b0c3dfc46f8c2" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.4.1", + "codespan-reporting", + "log", + "naga 0.12.3", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal 0.16.2", + "wgpu-types 0.16.1", ] [[package]] @@ -3646,16 +4441,58 @@ dependencies = [ "bitflags 2.4.1", "codespan-reporting", "log", - "naga", + "naga 0.13.0", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal 0.17.2", + "wgpu-types 0.17.0", +] + +[[package]] +name = "wgpu-hal" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ecb3258078e936deee14fd4e0febe1cfe9bbb5ffef165cb60218d2ee5eb4448" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.4.1", + "block", + "core-graphics-types", + "d3d12 0.6.0", + "foreign-types 0.3.2", + "glow", + "gpu-alloc 0.5.4", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.1", + "log", + "metal 0.24.0", + "naga 0.12.3", + "objc", "parking_lot", "profiling", + "range-alloc", "raw-window-handle", + "renderdoc-sys", "rustc-hash", "smallvec", "thiserror", + "wasm-bindgen", "web-sys", - "wgpu-hal", - "wgpu-types", + "wgpu-types 0.16.1", + "winapi", ] [[package]] @@ -3671,19 +4508,19 @@ dependencies = [ "bitflags 2.4.1", "block", "core-graphics-types", - "d3d12", + "d3d12 0.7.0", "glow", - "gpu-alloc", + "gpu-alloc 0.6.0", "gpu-allocator", "gpu-descriptor", "hassle-rs", "js-sys", "khronos-egl", "libc", - "libloading", + "libloading 0.7.4", "log", - "metal", - "naga", + "metal 0.26.0", + "naga 0.13.0", "objc", "parking_lot", "profiling", @@ -3695,10 +4532,21 @@ dependencies = [ "thiserror", "wasm-bindgen", "web-sys", - "wgpu-types", + "wgpu-types 0.17.0", "winapi", ] +[[package]] +name = "wgpu-types" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c153280bb108c2979eb5c7391cb18c56642dd3c072e55f52065e13e2a1252a" +dependencies = [ + "bitflags 2.4.1", + "js-sys", + "web-sys", +] + [[package]] name = "wgpu-types" version = "0.17.0" diff --git a/Cargo.toml b/Cargo.toml index 09262b0..c59e586 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,6 +57,7 @@ webbrowser = { version = "0.8", features = ["hardened"] } # keep the following in sync with Bevy's dependencies winit = { version = "0.28.7", default-features = false } image = { version = "0.24", default-features = false } +bevy_ecs_ldtk = "0.8.0" [build-dependencies] embed-resource = "1.4" diff --git a/assets/fonts/FiraMono-Medium.ttf b/assets/fonts/FiraMono-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1e95ced4c44be8648f1555ab8c135a6799f8c5a5 GIT binary patch literal 173516 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

>(@<@>0tc& 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 z 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

*N&HECA^t4B6n_zy#b3o&;&0-L_`CR8{6kz7 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 H_|N|V7~3XI literal 0 HcmV?d00001 diff --git a/src/lib.rs b/src/lib.rs index 2038911..a36f959 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,14 @@ #![allow(clippy::type_complexity)] +const HELP_FONT_SIZE: f32 = 1.0; +const TEXT_COLOR: Color = Color::Rgba { + red: 0., + green: 0.5, + blue: 0.5, + alpha: 1., +}; +const HELP_TEXT_PADDING: Val = Val::Px(15.0); + mod actions; mod audio; mod loading; @@ -39,13 +48,43 @@ impl Plugin for GamePlugin { LoadingPlugin, MenuPlugin, ActionsPlugin, - InternalAudioPlugin, - PlayerPlugin, + // InternalAudioPlugin, + // PlayerPlugin, )); #[cfg(debug_assertions)] { - app.add_plugins((FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin::default())); + app.add_plugins((FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin::default())) + .add_systems(Startup, setup_entity_count) + .add_systems(Update, update_entity_count); } } } + +#[derive(Component)] +struct EntityCount; + +fn setup_entity_count(mut commands: Commands, asset_server: Res) { + commands.spawn(( + TextBundle::from_section( + "", + TextStyle { + font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: HELP_FONT_SIZE, + color: TEXT_COLOR, + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: HELP_TEXT_PADDING, + right: HELP_TEXT_PADDING, + ..default() + }), + EntityCount, + )); +} + +fn update_entity_count(entities: Query, mut counters: Query<&mut Text, With>) { + let mut text = counters.single_mut(); + text.sections[0].value = format!("Entities: {:?}", entities.iter().len()); +} From e0a6997cca9144ee9b5779acfab48d2c63a01205 Mon Sep 17 00:00:00 2001 From: Mick Harrigan Date: Sat, 2 Dec 2023 12:54:13 -0800 Subject: [PATCH 02/49] Fixed the ldtk issues with a small patch --- Cargo.lock | 1410 ++++++++++++---------------------------------------- Cargo.toml | 6 +- 2 files changed, 327 insertions(+), 1089 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 43ed78b..894bd5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,46 +18,19 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" -[[package]] -name = "accesskit" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76eb1adf08c5bcaa8490b9851fd53cca27fa9880076f178ea9d29f05196728a8" - [[package]] name = "accesskit" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca8410747ed85a17c4a1e9ed3f5a74d3e7bdcc876cf9a18ff40ae21d645997b2" -[[package]] -name = "accesskit_consumer" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04bb4d9e4772fe0d47df57d0d5dbe5d85dd05e2f37ae1ddb6b105e76be58fb00" -dependencies = [ - "accesskit 0.11.2", -] - [[package]] name = "accesskit_consumer" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" dependencies = [ - "accesskit 0.12.1", -] - -[[package]] -name = "accesskit_macos" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134d0acf6acb667c89d3332999b1a5df4edbc8d6113910f392ebb73f2b03bb56" -dependencies = [ - "accesskit 0.11.2", - "accesskit_consumer 0.15.2", - "objc2", - "once_cell", + "accesskit", ] [[package]] @@ -66,61 +39,35 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" dependencies = [ - "accesskit 0.12.1", - "accesskit_consumer 0.16.1", + "accesskit", + "accesskit_consumer", "objc2", "once_cell", ] -[[package]] -name = "accesskit_windows" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eac0a7f2d7cd7a93b938af401d3d8e8b7094217989a7c25c55a953023436e31" -dependencies = [ - "accesskit 0.11.2", - "accesskit_consumer 0.15.2", - "arrayvec", - "once_cell", - "paste", - "windows 0.48.0", -] - [[package]] name = "accesskit_windows" version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" dependencies = [ - "accesskit 0.12.1", - "accesskit_consumer 0.16.1", + "accesskit", + "accesskit_consumer", "once_cell", "paste", "static_assertions", "windows 0.48.0", ] -[[package]] -name = "accesskit_winit" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825d23acee1bd6d25cbaa3ca6ed6e73faf24122a774ec33d52c5c86c6ab423c0" -dependencies = [ - "accesskit 0.11.2", - "accesskit_macos 0.9.0", - "accesskit_windows 0.14.3", - "winit", -] - [[package]] name = "accesskit_winit" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88e39fcec2e10971e188730b7a76bab60647dacc973d4591855ebebcadfaa738" dependencies = [ - "accesskit 0.12.1", - "accesskit_macos 0.10.1", - "accesskit_windows 0.15.1", + "accesskit", + "accesskit_macos", + "accesskit_windows", "winit", ] @@ -261,7 +208,7 @@ version = "0.37.3+1.3.251" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" dependencies = [ - "libloading 0.7.4", + "libloading", ] [[package]] @@ -371,15 +318,6 @@ version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" -[[package]] -name = "bevy" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91c6d3ec4f89e85294dc97334c5b271ddc301fdf67ac9bb994fe44d9273e6ed7" -dependencies = [ - "bevy_internal 0.11.3", -] - [[package]] name = "bevy" version = "0.12.0" @@ -387,19 +325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "329e344f835f5a9a4c46a6d1d57371f726aa2c482d1bd669b2b9c4eb1ee91fd7" dependencies = [ "bevy_dylib", - "bevy_internal 0.12.0", -] - -[[package]] -name = "bevy_a11y" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "132c9e35a77c5395951f6d25fa2c52ee92296353426df4f961e60f3ff47e2e42" -dependencies = [ - "accesskit 0.11.2", - "bevy_app 0.11.3", - "bevy_derive 0.11.3", - "bevy_ecs 0.11.3", + "bevy_internal", ] [[package]] @@ -408,10 +334,10 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271b812e5734f5056a400f7d64592dd82d6c0e6179389c2f066f433ab8bc7692" dependencies = [ - "accesskit 0.12.1", - "bevy_app 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", + "accesskit", + "bevy_app", + "bevy_derive", + "bevy_ecs", ] [[package]] @@ -420,33 +346,17 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab94187a1253433e14f175293d8a86ec1c2822fda2a17807908f11ec21f45f00" dependencies = [ - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core 0.12.0", - "bevy_ecs 0.12.0", - "bevy_hierarchy 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_time 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", -] - -[[package]] -name = "bevy_app" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557a7d59e1e16892d7544fc37316506ee598cb5310ef0365125a30783c11531" -dependencies = [ - "bevy_derive 0.11.3", - "bevy_ecs 0.11.3", - "bevy_reflect 0.11.3", - "bevy_tasks 0.11.3", - "bevy_utils 0.11.3", - "downcast-rs", - "wasm-bindgen", - "web-sys", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_time", + "bevy_transform", + "bevy_utils", ] [[package]] @@ -455,44 +365,16 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "172d532ea812e5954fa814dae003c207f2a0b20c6e50431787c94a7159677ece" dependencies = [ - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_reflect 0.12.0", - "bevy_tasks 0.12.0", - "bevy_utils 0.12.0", + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", "downcast-rs", "wasm-bindgen", "web-sys", ] -[[package]] -name = "bevy_asset" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9714af523da4cdf58c42a317e5ed40349708ad954a18533991fd64c8ae0a6f68" -dependencies = [ - "anyhow", - "async-channel", - "bevy_app 0.11.3", - "bevy_diagnostic 0.11.3", - "bevy_ecs 0.11.3", - "bevy_log 0.11.3", - "bevy_reflect 0.11.3", - "bevy_tasks 0.11.3", - "bevy_utils 0.11.3", - "bevy_winit 0.11.3", - "crossbeam-channel", - "downcast-rs", - "fastrand 1.9.0", - "js-sys", - "parking_lot", - "serde", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "bevy_asset" version = "0.12.0" @@ -502,14 +384,14 @@ dependencies = [ "async-broadcast", "async-fs", "async-lock", - "bevy_app 0.12.0", + "bevy_app", "bevy_asset_macros", - "bevy_ecs 0.12.0", - "bevy_log 0.12.0", - "bevy_reflect 0.12.0", - "bevy_tasks 0.12.0", - "bevy_utils 0.12.0", - "bevy_winit 0.12.0", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bevy_winit", "blake3", "crossbeam-channel", "downcast-rs", @@ -532,7 +414,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d797cc907daa293a2776fea1517ed79f9e54d9901dfd35410743cbe536d4c2b" dependencies = [ "anyhow", - "bevy 0.12.0", + "bevy", "bevy_asset_loader_derive", "path-slash", ] @@ -554,134 +436,72 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b3245193e90fc8abcf1059a467cb224501dcda083d114c67c10ac66b7171e3a" dependencies = [ - "bevy_macro_utils 0.12.0", + "bevy_macro_utils", "proc-macro2", "quote", "syn 2.0.38", ] -[[package]] -name = "bevy_core" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d5272321be5fcf5ce2fb16023bc825bb10dfcb71611117296537181ce950f48" -dependencies = [ - "bevy_app 0.11.3", - "bevy_ecs 0.11.3", - "bevy_math 0.11.3", - "bevy_reflect 0.11.3", - "bevy_tasks 0.11.3", - "bevy_utils 0.11.3", - "bytemuck", -] - [[package]] name = "bevy_core" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "025e6800b73048092a55c3611e9327ad4c4c17b60517ec1c0086bb40b4b19ea8" dependencies = [ - "bevy_app 0.12.0", - "bevy_ecs 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_tasks 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", "bytemuck", ] -[[package]] -name = "bevy_core_pipeline" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67382fa9c96ce4f4e5833ed7cedd9886844a8f3284b4a717bd4ac738dcdea0c3" -dependencies = [ - "bevy_app 0.11.3", - "bevy_asset 0.11.3", - "bevy_core 0.11.3", - "bevy_derive 0.11.3", - "bevy_ecs 0.11.3", - "bevy_math 0.11.3", - "bevy_reflect 0.11.3", - "bevy_render 0.11.3", - "bevy_transform 0.11.3", - "bevy_utils 0.11.3", - "bitflags 2.4.1", - "radsort", - "serde", -] - [[package]] name = "bevy_core_pipeline" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e4b08a2d53ba62d9ec1fca3f7f4e0f556e9f59e1c8e63a4b7c2a18c0701152c" dependencies = [ - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_log 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", "bitflags 2.4.1", "radsort", "serde", ] -[[package]] -name = "bevy_derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44e4e2784a81430199e4157e02903a987a32127c773985506f020e7d501b62e" -dependencies = [ - "bevy_macro_utils 0.11.3", - "quote", - "syn 2.0.38", -] - [[package]] name = "bevy_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24bf40259be12a1a24d9fd536f5ff18d31eeb5665b77e2732899783be6edc5d6" dependencies = [ - "bevy_macro_utils 0.12.0", + "bevy_macro_utils", "quote", "syn 2.0.38", ] -[[package]] -name = "bevy_diagnostic" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6babb230dc383c98fdfc9603e3a7a2a49e1e2879dbe8291059ef37dca897932e" -dependencies = [ - "bevy_app 0.11.3", - "bevy_core 0.11.3", - "bevy_ecs 0.11.3", - "bevy_log 0.11.3", - "bevy_time 0.11.3", - "bevy_utils 0.11.3", - "sysinfo", -] - [[package]] name = "bevy_diagnostic" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41b5a99a9fb6cd7d1eb1714fad193944a0317f0887a15cccb8309c8d37951132" dependencies = [ - "bevy_app 0.12.0", - "bevy_core 0.12.0", - "bevy_ecs 0.12.0", - "bevy_log 0.12.0", - "bevy_time 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_time", + "bevy_utils", "sysinfo", ] @@ -691,28 +511,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "766980812401453563a7490a351dab88e8f53e62ff37e27a5236e6893deedc5a" dependencies = [ - "bevy_internal 0.12.0", -] - -[[package]] -name = "bevy_ecs" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266144b36df7e834d5198049e037ecdf2a2310a76ce39ed937d1b0a6a2c4e8c6" -dependencies = [ - "async-channel", - "bevy_ecs_macros 0.11.3", - "bevy_ptr 0.11.3", - "bevy_reflect 0.11.3", - "bevy_tasks 0.11.3", - "bevy_utils 0.11.3", - "downcast-rs", - "event-listener", - "fixedbitset", - "rustc-hash", - "serde", - "thiserror", - "thread_local", + "bevy_internal", ] [[package]] @@ -722,11 +521,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae11a1f467c372b50e9d4b55e78370f5420c9db7416200cc441cc84f08174dd3" dependencies = [ "async-channel", - "bevy_ecs_macros 0.12.0", - "bevy_ptr 0.12.0", - "bevy_reflect 0.12.0", - "bevy_tasks 0.12.0", - "bevy_utils 0.12.0", + "bevy_ecs_macros", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", "downcast-rs", "event-listener", "fixedbitset", @@ -739,15 +538,16 @@ dependencies = [ [[package]] name = "bevy_ecs_ldtk" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037f862d30f5b74e3b5136acf435c8210b8e8f00c354d7b40234464f04f59fd7" +source = "git+https://github.com/Trouv/bevy_ecs_ldtk.git?branch=feat/bevy-0.12#5feb5cc3452e0b7898db8348e0ebcea890c63e15" dependencies = [ - "anyhow", - "bevy 0.11.3", + "bevy", "bevy_ecs_ldtk_macros", "bevy_ecs_tilemap", + "derive-getters", + "derive_more", "hex", "paste", + "path-clean", "regex", "serde", "serde_json", @@ -757,33 +557,20 @@ dependencies = [ [[package]] name = "bevy_ecs_ldtk_macros" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84deb3aba5b9586df80f4f2a72510d586a12f936df71cebbe97b430a479379f" +source = "git+https://github.com/Trouv/bevy_ecs_ldtk.git?branch=feat/bevy-0.12#5feb5cc3452e0b7898db8348e0ebcea890c63e15" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] -[[package]] -name = "bevy_ecs_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7157a9c3be038d5008ee3f114feb6cf6b39c1d3d32ee21a7cacb8f81fccdfa80" -dependencies = [ - "bevy_macro_utils 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "bevy_ecs_macros" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f642c2b67c4d0daf8edf15074f6351457eb487a34b3de1290c760d8f3ac9ec16" dependencies = [ - "bevy_macro_utils 0.12.0", + "bevy_macro_utils", "proc-macro2", "quote", "syn 2.0.38", @@ -791,32 +578,21 @@ dependencies = [ [[package]] name = "bevy_ecs_tilemap" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b64cb7171c43b30e9fa75cd8748911e06139ff45a04fa4be881201079fee295" +version = "0.12.0" +source = "git+https://github.com/divark/bevy_ecs_tilemap?branch=0.12-fixes#658b6c12441a808c8342233a230863d3c74f780f" dependencies = [ - "bevy 0.11.3", + "bevy", "log", "regex", ] -[[package]] -name = "bevy_encase_derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ac0f55ad6bca1be7b0f35bbd5fc95ed3d31e4e9db158fee8e5327f59006001" -dependencies = [ - "bevy_macro_utils 0.11.3", - "encase_derive_impl", -] - [[package]] name = "bevy_encase_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65b9fb5a62c4e3ab70caaa839470d35fa932001b1b34b08bc7f7f1909bd2b3a7" dependencies = [ - "bevy_macro_utils 0.12.0", + "bevy_macro_utils", "encase_derive_impl", ] @@ -824,7 +600,7 @@ dependencies = [ name = "bevy_game" version = "0.1.0" dependencies = [ - "bevy 0.12.0", + "bevy", "bevy_asset_loader", "bevy_ecs_ldtk", "bevy_kira_audio", @@ -841,53 +617,34 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad31cc2c84315e0759d793d6c5bcb7d8789bbc16359c98d1b766e708c1bbae49" dependencies = [ - "bevy_app 0.12.0", - "bevy_ecs 0.12.0", - "bevy_input 0.12.0", - "bevy_log 0.12.0", - "bevy_time 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_log", + "bevy_time", + "bevy_utils", "gilrs", "thiserror", ] -[[package]] -name = "bevy_gizmos" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e286a3e7276431963f4aa29165ea5429fa7dbbc6d5c5ba0c531e7dd44ecc88a2" -dependencies = [ - "bevy_app 0.11.3", - "bevy_asset 0.11.3", - "bevy_core 0.11.3", - "bevy_core_pipeline 0.11.3", - "bevy_ecs 0.11.3", - "bevy_math 0.11.3", - "bevy_reflect 0.11.3", - "bevy_render 0.11.3", - "bevy_sprite 0.11.3", - "bevy_transform 0.11.3", - "bevy_utils 0.11.3", -] - [[package]] name = "bevy_gizmos" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87d1cc978b91f416b23eb16f00e69f95c3a04582021827d8082e92d4725cc510" dependencies = [ - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core 0.12.0", - "bevy_core_pipeline 0.12.0", - "bevy_ecs 0.12.0", - "bevy_math 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_math", "bevy_pbr", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_sprite 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", ] [[package]] @@ -898,21 +655,21 @@ checksum = "6f933745c0c86e2c07948def581259b466f99708328657054e956275430ccfd7" dependencies = [ "base64 0.13.1", "bevy_animation", - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core 0.12.0", - "bevy_core_pipeline 0.12.0", - "bevy_ecs 0.12.0", - "bevy_hierarchy 0.12.0", - "bevy_log 0.12.0", - "bevy_math 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_hierarchy", + "bevy_log", + "bevy_math", "bevy_pbr", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_scene 0.12.0", - "bevy_tasks 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_tasks", + "bevy_transform", + "bevy_utils", "gltf", "percent-encoding", "serde", @@ -920,131 +677,71 @@ dependencies = [ "thiserror", ] -[[package]] -name = "bevy_hierarchy" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "103f8f58416ac6799b8c7f0b418f1fac9eba44fa924df3b0e16b09256b897e3d" -dependencies = [ - "bevy_app 0.11.3", - "bevy_core 0.11.3", - "bevy_ecs 0.11.3", - "bevy_log 0.11.3", - "bevy_reflect 0.11.3", - "bevy_utils 0.11.3", - "smallvec", -] - [[package]] name = "bevy_hierarchy" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa240011fce8ee23f9b46e5a26a628a31d7860d6d2e4e0e361bb3ea6d5a703" dependencies = [ - "bevy_app 0.12.0", - "bevy_core 0.12.0", - "bevy_ecs 0.12.0", - "bevy_log 0.12.0", - "bevy_reflect 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_utils", "smallvec", ] -[[package]] -name = "bevy_input" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbd935401101ac8003f3c3aea70788c65ad03f7a32716a10608bedda7a648bc" -dependencies = [ - "bevy_app 0.11.3", - "bevy_ecs 0.11.3", - "bevy_math 0.11.3", - "bevy_reflect 0.11.3", - "bevy_utils 0.11.3", - "thiserror", -] - [[package]] name = "bevy_input" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e86e241b3a10b79f65a69205552546723b855d3d4c1bd8261637c076144d32f" dependencies = [ - "bevy_app 0.12.0", - "bevy_ecs 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", "thiserror", ] -[[package]] -name = "bevy_internal" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e35a9b2bd29aa784b3cc416bcbf2a298f69f00ca51fd042ea39d9af7fad37e" -dependencies = [ - "bevy_a11y 0.11.3", - "bevy_app 0.11.3", - "bevy_asset 0.11.3", - "bevy_core 0.11.3", - "bevy_core_pipeline 0.11.3", - "bevy_derive 0.11.3", - "bevy_diagnostic 0.11.3", - "bevy_ecs 0.11.3", - "bevy_gizmos 0.11.3", - "bevy_hierarchy 0.11.3", - "bevy_input 0.11.3", - "bevy_log 0.11.3", - "bevy_math 0.11.3", - "bevy_ptr 0.11.3", - "bevy_reflect 0.11.3", - "bevy_render 0.11.3", - "bevy_scene 0.11.3", - "bevy_sprite 0.11.3", - "bevy_tasks 0.11.3", - "bevy_time 0.11.3", - "bevy_transform 0.11.3", - "bevy_utils 0.11.3", - "bevy_window 0.11.3", -] - [[package]] name = "bevy_internal" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55124e486814c4d3632d5cfad9c4f4e46d052c028593ec46fef5bfbfb0f840b1" dependencies = [ - "bevy_a11y 0.12.0", + "bevy_a11y", "bevy_animation", - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core 0.12.0", - "bevy_core_pipeline 0.12.0", - "bevy_derive 0.12.0", - "bevy_diagnostic 0.12.0", - "bevy_ecs 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", "bevy_gilrs", - "bevy_gizmos 0.12.0", + "bevy_gizmos", "bevy_gltf", - "bevy_hierarchy 0.12.0", - "bevy_input 0.12.0", - "bevy_log 0.12.0", - "bevy_math 0.12.0", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", "bevy_pbr", - "bevy_ptr 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_scene 0.12.0", - "bevy_sprite 0.12.0", - "bevy_tasks 0.12.0", + "bevy_ptr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_sprite", + "bevy_tasks", "bevy_text", - "bevy_time 0.12.0", - "bevy_transform 0.12.0", + "bevy_time", + "bevy_transform", "bevy_ui", - "bevy_utils 0.12.0", - "bevy_window 0.12.0", - "bevy_winit 0.12.0", + "bevy_utils", + "bevy_window", + "bevy_winit", ] [[package]] @@ -1054,29 +751,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a9678086759e54871faab0829592423492e19f8de5076127315cf892ae56f33" dependencies = [ "anyhow", - "bevy 0.12.0", + "bevy", "kira", "parking_lot", "thiserror", "uuid", ] -[[package]] -name = "bevy_log" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07dcc615ff4f617b06c3f9522fca3c55d56f9644db293318f8ab68fcdea5d4fe" -dependencies = [ - "android_log-sys", - "bevy_app 0.11.3", - "bevy_ecs 0.11.3", - "bevy_utils 0.11.3", - "console_error_panic_hook", - "tracing-log", - "tracing-subscriber", - "tracing-wasm", -] - [[package]] name = "bevy_log" version = "0.12.0" @@ -1084,27 +765,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "011417debf7868b45932bb97fc0d5bfdeaf9304e324aa94840e2f1e6deeed69d" dependencies = [ "android_log-sys", - "bevy_app 0.12.0", - "bevy_ecs 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_ecs", + "bevy_utils", "console_error_panic_hook", "tracing-log", "tracing-subscriber", "tracing-wasm", ] -[[package]] -name = "bevy_macro_utils" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ddc18d489b4e57832d4958cde7cd2f349f0ad91e5892ac9e2f2ee16546b981" -dependencies = [ - "quote", - "rustc-hash", - "syn 2.0.38", - "toml_edit 0.19.15", -] - [[package]] name = "bevy_macro_utils" version = "0.12.0" @@ -1118,16 +787,6 @@ dependencies = [ "toml_edit 0.20.7", ] -[[package]] -name = "bevy_math" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78286a81fead796dc4b45ab14f4f02fe29a94423d3587bcfef872b2a8e0a474b" -dependencies = [ - "glam", - "serde", -] - [[package]] name = "bevy_math" version = "0.12.0" @@ -1138,15 +797,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bevy_mikktspace" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfc2a21ea47970a9b1f0f4735af3256a8f204815bd756110051d10f9d909497" -dependencies = [ - "glam", -] - [[package]] name = "bevy_mikktspace" version = "0.12.0" @@ -1162,69 +812,42 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eeb6a35a78d355cc21c10f277dcd171eca65e30a90e76eb89f4dacf606621fe1" dependencies = [ - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core_pipeline 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", - "bevy_window 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", "bitflags 2.4.1", "bytemuck", "fixedbitset", - "naga_oil 0.10.0", + "naga_oil", "radsort", "smallvec", "thread_local", ] -[[package]] -name = "bevy_ptr" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c7586401a46f7d8e436028225c1df5288f2e0082d066b247a82466fea155c6" - [[package]] name = "bevy_ptr" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308a02679f6ce21ef71de20fae6d6a2016c07baa21d8e8d0558e6b7851e8adf2" -[[package]] -name = "bevy_reflect" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0778197a1eb3e095a71417c74b7152ede02975cdc95b5ea4ddc5251ed00a2eb5" -dependencies = [ - "bevy_math 0.11.3", - "bevy_ptr 0.11.3", - "bevy_reflect_derive 0.11.3", - "bevy_utils 0.11.3", - "downcast-rs", - "erased-serde", - "glam", - "once_cell", - "parking_lot", - "serde", - "smallvec", - "smol_str", - "thiserror", -] - [[package]] name = "bevy_reflect" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdd56914a8ad57621d7a1a099f7e6b1f7482c9c76cedc9c3d4c175a203939c5d" dependencies = [ - "bevy_math 0.12.0", - "bevy_ptr 0.12.0", - "bevy_reflect_derive 0.12.0", - "bevy_utils 0.12.0", + "bevy_math", + "bevy_ptr", + "bevy_reflect_derive", + "bevy_utils", "downcast-rs", "erased-serde", "glam", @@ -1234,81 +857,19 @@ dependencies = [ "thiserror", ] -[[package]] -name = "bevy_reflect_derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "342a4b2d09db22c48607d23ad59a056aff1ee004549050a51d490d375ba29528" -dependencies = [ - "bevy_macro_utils 0.11.3", - "bit-set", - "proc-macro2", - "quote", - "syn 2.0.38", - "uuid", -] - [[package]] name = "bevy_reflect_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25f627907c40ac552f798423447fc331fc1ddacd94c5f7a2a70942eb06bc8447" dependencies = [ - "bevy_macro_utils 0.12.0", + "bevy_macro_utils", "proc-macro2", "quote", "syn 2.0.38", "uuid", ] -[[package]] -name = "bevy_render" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39df4824b760928c27afc7b00fb649c7a63c9d76661ab014ff5c86537ee906cb" -dependencies = [ - "anyhow", - "async-channel", - "bevy_app 0.11.3", - "bevy_asset 0.11.3", - "bevy_core 0.11.3", - "bevy_derive 0.11.3", - "bevy_ecs 0.11.3", - "bevy_encase_derive 0.11.3", - "bevy_hierarchy 0.11.3", - "bevy_log 0.11.3", - "bevy_math 0.11.3", - "bevy_mikktspace 0.11.3", - "bevy_reflect 0.11.3", - "bevy_render_macros 0.11.3", - "bevy_tasks 0.11.3", - "bevy_time 0.11.3", - "bevy_transform 0.11.3", - "bevy_utils 0.11.3", - "bevy_window 0.11.3", - "bitflags 2.4.1", - "bytemuck", - "codespan-reporting", - "downcast-rs", - "encase", - "futures-lite", - "hexasphere", - "image", - "js-sys", - "naga 0.12.3", - "naga_oil 0.8.2", - "parking_lot", - "regex", - "serde", - "smallvec", - "thiserror", - "thread_local", - "wasm-bindgen", - "web-sys", - "wgpu 0.16.3", - "wgpu-hal 0.16.2", -] - [[package]] name = "bevy_render" version = "0.12.0" @@ -1316,23 +877,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90d777f4c51bd58e9e40777c6cb8dde0778df7e2c5298b3f9e3455bd12a9856c" dependencies = [ "async-channel", - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_encase_derive 0.12.0", - "bevy_hierarchy 0.12.0", - "bevy_log 0.12.0", - "bevy_math 0.12.0", - "bevy_mikktspace 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render_macros 0.12.0", - "bevy_tasks 0.12.0", - "bevy_time 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", - "bevy_window 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_encase_derive", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_mikktspace", + "bevy_reflect", + "bevy_render_macros", + "bevy_tasks", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", "bitflags 2.4.1", "bytemuck", "codespan-reporting", @@ -1343,8 +904,8 @@ dependencies = [ "image", "js-sys", "ktx2", - "naga 0.13.0", - "naga_oil 0.10.0", + "naga", + "naga_oil", "ruzstd", "serde", "smallvec", @@ -1352,19 +913,7 @@ dependencies = [ "thread_local", "wasm-bindgen", "web-sys", - "wgpu 0.17.1", -] - -[[package]] -name = "bevy_render_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd08c740aac73363e32fb45af869b10cec65bcb76fe3e6cd0f8f7eebf4c36c9" -dependencies = [ - "bevy_macro_utils 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.38", + "wgpu", ] [[package]] @@ -1373,118 +922,57 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35b00c3d0abff94a729460fc9aa95c2ceac71b49b3041166bb5ba3098e9657e7" dependencies = [ - "bevy_macro_utils 0.12.0", + "bevy_macro_utils", "proc-macro2", "quote", "syn 2.0.38", ] -[[package]] -name = "bevy_scene" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd47e1263506153bef3a8be97fe2d856f206d315668c4f97510ca6cc181d9681" -dependencies = [ - "anyhow", - "bevy_app 0.11.3", - "bevy_asset 0.11.3", - "bevy_derive 0.11.3", - "bevy_ecs 0.11.3", - "bevy_hierarchy 0.11.3", - "bevy_reflect 0.11.3", - "bevy_render 0.11.3", - "bevy_transform 0.11.3", - "bevy_utils 0.11.3", - "ron", - "serde", - "thiserror", - "uuid", -] - [[package]] name = "bevy_scene" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba6294396a6375f0b14341d8003408c10aa040e3f833ac8bd49677170ec55d73" dependencies = [ - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_hierarchy 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", "ron", "serde", "thiserror", "uuid", ] -[[package]] -name = "bevy_sprite" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a8ca824fad75c6ef74cfbbba0a4ce3ccc435fa23d6bf3f003f260548813397" -dependencies = [ - "bevy_app 0.11.3", - "bevy_asset 0.11.3", - "bevy_core_pipeline 0.11.3", - "bevy_derive 0.11.3", - "bevy_ecs 0.11.3", - "bevy_log 0.11.3", - "bevy_math 0.11.3", - "bevy_reflect 0.11.3", - "bevy_render 0.11.3", - "bevy_transform 0.11.3", - "bevy_utils 0.11.3", - "bitflags 2.4.1", - "bytemuck", - "fixedbitset", - "guillotiere", - "rectangle-pack", - "thiserror", -] - [[package]] name = "bevy_sprite" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4f7d1f88a6e5497fdafd95c20984a1d1b5517bc39d51600b4988cd60c51837a" dependencies = [ - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core_pipeline 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_log 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", "bitflags 2.4.1", "bytemuck", "fixedbitset", - "guillotiere", - "radsort", - "rectangle-pack", - "thiserror", -] - -[[package]] -name = "bevy_tasks" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c73bbb847c83990d3927005090df52f8ac49332e1643d2ad9aac3cd2974e66bf" -dependencies = [ - "async-channel", - "async-executor", - "async-task", - "concurrent-queue", - "futures-lite", - "wasm-bindgen-futures", + "guillotiere", + "radsort", + "rectangle-pack", + "thiserror", ] [[package]] @@ -1508,73 +996,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c136af700af4f87c94f68d6e019528c371bf09ebf4a8ff7468bb3c73806b34f5" dependencies = [ "ab_glyph", - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_ecs 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_sprite 0.12.0", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", - "bevy_window 0.12.0", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", + "bevy_window", "glyph_brush_layout", "serde", "thiserror", ] -[[package]] -name = "bevy_time" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d58d6dbae9c8225d8c0e0f04d2c5dbb71d22adc01ecd5ab3cebc364139e4a6d" -dependencies = [ - "bevy_app 0.11.3", - "bevy_ecs 0.11.3", - "bevy_reflect 0.11.3", - "bevy_utils 0.11.3", - "crossbeam-channel", - "thiserror", -] - [[package]] name = "bevy_time" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b29709cadf22d318a0b7c79f763e9c5ac414292bd0e850066fa935959021b276" dependencies = [ - "bevy_app 0.12.0", - "bevy_ecs 0.12.0", - "bevy_reflect 0.12.0", - "bevy_utils 0.12.0", + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", "crossbeam-channel", "thiserror", ] -[[package]] -name = "bevy_transform" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9b0ac0149a57cd846cb357a35fc99286f9848e53d4481954608ac9552ed2d4" -dependencies = [ - "bevy_app 0.11.3", - "bevy_ecs 0.11.3", - "bevy_hierarchy 0.11.3", - "bevy_math 0.11.3", - "bevy_reflect 0.11.3", -] - [[package]] name = "bevy_transform" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70262c51e915b6224129206d23823364e650cf5eb5f4b6ce3ee379f608c180d2" dependencies = [ - "bevy_app 0.12.0", - "bevy_ecs 0.12.0", - "bevy_hierarchy 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", "thiserror", ] @@ -1584,23 +1045,23 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd5ecbf2dceaab118769dd870e34d780bfde556af561fd10d8d613b0f237297e" dependencies = [ - "bevy_a11y 0.12.0", - "bevy_app 0.12.0", - "bevy_asset 0.12.0", - "bevy_core_pipeline 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_hierarchy 0.12.0", - "bevy_input 0.12.0", - "bevy_log 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_render 0.12.0", - "bevy_sprite 0.12.0", + "bevy_a11y", + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", "bevy_text", - "bevy_transform 0.12.0", - "bevy_utils 0.12.0", - "bevy_window 0.12.0", + "bevy_transform", + "bevy_utils", + "bevy_window", "bytemuck", "serde", "smallvec", @@ -1608,23 +1069,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "bevy_utils" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d9484e32434ea84dc548cff246ce0c6f756c1336f5ea03f24ac120a48595c7" -dependencies = [ - "ahash", - "bevy_utils_proc_macros 0.11.3", - "getrandom", - "hashbrown 0.14.2", - "instant", - "petgraph", - "thiserror", - "tracing", - "uuid", -] - [[package]] name = "bevy_utils" version = "0.12.0" @@ -1632,7 +1076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8e75d4a34ef0b15dffd1ee9079ef1f0f5139527e192b9d5708b3e158777c753" dependencies = [ "ahash", - "bevy_utils_proc_macros 0.12.0", + "bevy_utils_proc_macros", "getrandom", "hashbrown 0.14.2", "instant", @@ -1643,17 +1087,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "bevy_utils_proc_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5391b242c36f556db01d5891444730c83aa9dd648b6a8fd2b755d22cb3bddb57" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "bevy_utils_proc_macros" version = "0.12.0" @@ -1665,60 +1098,20 @@ dependencies = [ "syn 2.0.38", ] -[[package]] -name = "bevy_window" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd584c0da7c4ada6557b09f57f30fb7cff21ccedc641473fc391574b4c9b7944" -dependencies = [ - "bevy_app 0.11.3", - "bevy_ecs 0.11.3", - "bevy_input 0.11.3", - "bevy_math 0.11.3", - "bevy_reflect 0.11.3", - "bevy_utils 0.11.3", - "raw-window-handle", -] - [[package]] name = "bevy_window" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e60d1830b3fbd7db5bfea7ac9fcd0f5e1d1af88c91ab469e697ab176d8b3140b" dependencies = [ - "bevy_a11y 0.12.0", - "bevy_app 0.12.0", - "bevy_ecs 0.12.0", - "bevy_input 0.12.0", - "bevy_math 0.12.0", - "bevy_reflect 0.12.0", - "bevy_utils 0.12.0", - "raw-window-handle", -] - -[[package]] -name = "bevy_winit" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdc044abdb95790c20053e6326760f0a2985f0dcd78613d397bf35f16039d53" -dependencies = [ - "accesskit_winit 0.14.4", - "approx", - "bevy_a11y 0.11.3", - "bevy_app 0.11.3", - "bevy_derive 0.11.3", - "bevy_ecs 0.11.3", - "bevy_hierarchy 0.11.3", - "bevy_input 0.11.3", - "bevy_math 0.11.3", - "bevy_tasks 0.11.3", - "bevy_utils 0.11.3", - "bevy_window 0.11.3", - "crossbeam-channel", + "bevy_a11y", + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_reflect", + "bevy_utils", "raw-window-handle", - "wasm-bindgen", - "web-sys", - "winit", ] [[package]] @@ -1727,18 +1120,18 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f8294e78c6a1f9c34d36501a377c5d20bf0fa23a0958187bb270187741448ba" dependencies = [ - "accesskit_winit 0.15.0", + "accesskit_winit", "approx", - "bevy_a11y 0.12.0", - "bevy_app 0.12.0", - "bevy_derive 0.12.0", - "bevy_ecs 0.12.0", - "bevy_hierarchy 0.12.0", - "bevy_input 0.12.0", - "bevy_math 0.12.0", - "bevy_tasks 0.12.0", - "bevy_utils 0.12.0", - "bevy_window 0.12.0", + "bevy_a11y", + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_math", + "bevy_tasks", + "bevy_utils", + "bevy_window", "crossbeam-channel", "raw-window-handle", "wasm-bindgen", @@ -1933,7 +1326,7 @@ checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", - "libloading 0.7.4", + "libloading", ] [[package]] @@ -2014,6 +1407,12 @@ dependencies = [ "const_soft_float", ] +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "core-foundation" version = "0.9.3" @@ -2127,17 +1526,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "d3d12" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" -dependencies = [ - "bitflags 1.3.2", - "libloading 0.7.4", - "winapi", -] - [[package]] name = "d3d12" version = "0.7.0" @@ -2145,7 +1533,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" dependencies = [ "bitflags 2.4.1", - "libloading 0.7.4", + "libloading", "winapi", ] @@ -2161,6 +1549,30 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +[[package]] +name = "derive-getters" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2c35ab6e03642397cdda1dd58abbc05d418aef8e36297f336d5aba060fe8df" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -2508,16 +1920,6 @@ dependencies = [ "xi-unicode", ] -[[package]] -name = "gpu-alloc" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22beaafc29b38204457ea030f6fb7a84c9e4dd1b86e311ba0542533453d87f62" -dependencies = [ - "bitflags 1.3.2", - "gpu-alloc-types 0.2.0", -] - [[package]] name = "gpu-alloc" version = "0.6.0" @@ -2525,16 +1927,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ "bitflags 2.4.1", - "gpu-alloc-types 0.3.0", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" -dependencies = [ - "bitflags 1.3.2", + "gpu-alloc-types", ] [[package]] @@ -2621,7 +2014,7 @@ dependencies = [ "bitflags 1.3.2", "com-rs", "libc", - "libloading 0.7.4", + "libloading", "thiserror", "widestring", "winapi", @@ -2811,7 +2204,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" dependencies = [ "libc", - "libloading 0.7.4", + "libloading", "pkg-config", ] @@ -2866,16 +2259,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "libloading" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "libudev-sys" version = "0.1.4" @@ -2935,20 +2318,6 @@ version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" -[[package]] -name = "metal" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" -dependencies = [ - "bitflags 1.3.2", - "block", - "core-graphics-types", - "foreign-types 0.3.2", - "log", - "objc", -] - [[package]] name = "metal" version = "0.26.0" @@ -2998,27 +2367,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "naga" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbcc2e0513220fd2b598e6068608d4462db20322c0e77e47f6f488dfcfc279cb" -dependencies = [ - "bit-set", - "bitflags 1.3.2", - "codespan-reporting", - "hexf-parse", - "indexmap 1.9.3", - "log", - "num-traits", - "pp-rs", - "rustc-hash", - "spirv", - "termcolor", - "thiserror", - "unicode-xid", -] - [[package]] name = "naga" version = "0.13.0" @@ -3040,26 +2388,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "naga_oil" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be942a5c21c58b9b0bf4d9b99db3634ddb7a916f8e1d1d0b71820cc4150e56b" -dependencies = [ - "bit-set", - "codespan-reporting", - "data-encoding", - "indexmap 1.9.3", - "naga 0.12.3", - "once_cell", - "regex", - "regex-syntax 0.6.29", - "rustc-hash", - "thiserror", - "tracing", - "unicode-ident", -] - [[package]] name = "naga_oil" version = "0.10.0" @@ -3070,7 +2398,7 @@ dependencies = [ "codespan-reporting", "data-encoding", "indexmap 1.9.3", - "naga 0.13.0", + "naga", "once_cell", "regex", "regex-syntax 0.7.5", @@ -3391,6 +2719,12 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +[[package]] +name = "path-clean" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" + [[package]] name = "path-slash" version = "0.2.1" @@ -4359,30 +3693,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wgpu" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480c965c9306872eb6255fa55e4b4953be55a8b64d57e61d7ff840d3dcc051cd" -dependencies = [ - "arrayvec", - "cfg-if", - "js-sys", - "log", - "naga 0.12.3", - "parking_lot", - "profiling", - "raw-window-handle", - "smallvec", - "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "wgpu-core 0.16.1", - "wgpu-hal 0.16.2", - "wgpu-types 0.16.1", -] - [[package]] name = "wgpu" version = "0.17.1" @@ -4393,7 +3703,7 @@ dependencies = [ "cfg-if", "js-sys", "log", - "naga 0.13.0", + "naga", "parking_lot", "profiling", "raw-window-handle", @@ -4402,32 +3712,9 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core 0.17.1", - "wgpu-hal 0.17.2", - "wgpu-types 0.17.0", -] - -[[package]] -name = "wgpu-core" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f478237b4bf0d5b70a39898a66fa67ca3a007d79f2520485b8b0c3dfc46f8c2" -dependencies = [ - "arrayvec", - "bit-vec", - "bitflags 2.4.1", - "codespan-reporting", - "log", - "naga 0.12.3", - "parking_lot", - "profiling", - "raw-window-handle", - "rustc-hash", - "smallvec", - "thiserror", - "web-sys", - "wgpu-hal 0.16.2", - "wgpu-types 0.16.1", + "wgpu-core", + "wgpu-hal", + "wgpu-types", ] [[package]] @@ -4441,58 +3728,16 @@ dependencies = [ "bitflags 2.4.1", "codespan-reporting", "log", - "naga 0.13.0", - "parking_lot", - "profiling", - "raw-window-handle", - "rustc-hash", - "smallvec", - "thiserror", - "web-sys", - "wgpu-hal 0.17.2", - "wgpu-types 0.17.0", -] - -[[package]] -name = "wgpu-hal" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecb3258078e936deee14fd4e0febe1cfe9bbb5ffef165cb60218d2ee5eb4448" -dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bit-set", - "bitflags 2.4.1", - "block", - "core-graphics-types", - "d3d12 0.6.0", - "foreign-types 0.3.2", - "glow", - "gpu-alloc 0.5.4", - "gpu-allocator", - "gpu-descriptor", - "hassle-rs", - "js-sys", - "khronos-egl", - "libc", - "libloading 0.8.1", - "log", - "metal 0.24.0", - "naga 0.12.3", - "objc", + "naga", "parking_lot", "profiling", - "range-alloc", "raw-window-handle", - "renderdoc-sys", "rustc-hash", "smallvec", "thiserror", - "wasm-bindgen", "web-sys", - "wgpu-types 0.16.1", - "winapi", + "wgpu-hal", + "wgpu-types", ] [[package]] @@ -4508,19 +3753,19 @@ dependencies = [ "bitflags 2.4.1", "block", "core-graphics-types", - "d3d12 0.7.0", + "d3d12", "glow", - "gpu-alloc 0.6.0", + "gpu-alloc", "gpu-allocator", "gpu-descriptor", "hassle-rs", "js-sys", "khronos-egl", "libc", - "libloading 0.7.4", + "libloading", "log", - "metal 0.26.0", - "naga 0.13.0", + "metal", + "naga", "objc", "parking_lot", "profiling", @@ -4532,21 +3777,10 @@ dependencies = [ "thiserror", "wasm-bindgen", "web-sys", - "wgpu-types 0.17.0", + "wgpu-types", "winapi", ] -[[package]] -name = "wgpu-types" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c153280bb108c2979eb5c7391cb18c56642dd3c072e55f52065e13e2a1252a" -dependencies = [ - "bitflags 2.4.1", - "js-sys", - "web-sys", -] - [[package]] name = "wgpu-types" version = "0.17.0" diff --git a/Cargo.toml b/Cargo.toml index c59e586..b5f5e3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,9 @@ lto = "thin" [features] dev = ["bevy/dynamic_linking"] +[patch.crates-io] +bevy_ecs_tilemap = { git = "https://github.com/divark/bevy_ecs_tilemap", branch = "0.12-fixes" } + # All of Bevy's default features exept for the audio related ones (bevy_audio, vorbis), since they clash with bevy_kira_audio # and android_shared_stdcxx, since that is covered in `mobile` [dependencies] @@ -57,7 +60,8 @@ webbrowser = { version = "0.8", features = ["hardened"] } # keep the following in sync with Bevy's dependencies winit = { version = "0.28.7", default-features = false } image = { version = "0.24", default-features = false } -bevy_ecs_ldtk = "0.8.0" +bevy_ecs_ldtk = { git = "https://github.com/Trouv/bevy_ecs_ldtk.git", branch = "feat/bevy-0.12" } + [build-dependencies] embed-resource = "1.4" From 72eb75bdc7cbe2366249209d824ded302825a3b1 Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sat, 2 Dec 2023 13:32:22 -0800 Subject: [PATCH 03/49] Loading a level finally :) --- Cargo.toml | 40 +-- assets/tinybattle.png | Bin 0 -> 8793 bytes assets/world.ldtk | 643 ++++++++++++++++++++++++++++++++++++++++++ src/loading.rs | 2 +- src/main.rs | 35 ++- src/menu.rs | 30 +- 6 files changed, 714 insertions(+), 36 deletions(-) create mode 100644 assets/tinybattle.png create mode 100644 assets/world.ldtk diff --git a/Cargo.toml b/Cargo.toml index b5f5e3e..8310787 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,26 +31,26 @@ bevy_ecs_tilemap = { git = "https://github.com/divark/bevy_ecs_tilemap", branch # and android_shared_stdcxx, since that is covered in `mobile` [dependencies] bevy = { version = "0.12", default-features = false, features = [ - "animation", - "bevy_asset", - "bevy_gilrs", - "bevy_scene", - "bevy_winit", - "bevy_core_pipeline", - "bevy_pbr", - "bevy_gltf", - "bevy_render", - "bevy_sprite", - "bevy_text", - "bevy_ui", - "multi-threaded", - "png", - "hdr", - "x11", - "bevy_gizmos", - "tonemapping_luts", - "default_font", - "webgl2", + "animation", + "bevy_asset", + "bevy_gilrs", + "bevy_scene", + "bevy_winit", + "bevy_core_pipeline", + "bevy_pbr", + "bevy_gltf", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_ui", + "multi-threaded", + "png", + "hdr", + "x11", + "bevy_gizmos", + "tonemapping_luts", + "default_font", + "webgl2", ] } bevy_kira_audio = { version = "0.18" } bevy_asset_loader = { version = "0.18" } diff --git a/assets/tinybattle.png b/assets/tinybattle.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cc0407e06b5335f4f394868b2ed7cd9d02dd73 GIT binary patch literal 8793 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::Loading) + // .add_collection_to_loading_state::<_, AudioAssets>(GameState::Loading) .add_collection_to_loading_state::<_, TextureAssets>(GameState::Loading); } } diff --git a/src/main.rs b/src/main.rs index b82c9e2..1f100f9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,25 +9,32 @@ use bevy_game::GamePlugin; // ToDo: Replace bevy_game with your new crate name. use std::io::Cursor; use winit::window::Icon; +use bevy_ecs_ldtk::prelude::*; + fn main() { App::new() .insert_resource(Msaa::Off) .insert_resource(ClearColor(Color::rgb(0.4, 0.4, 0.4))) - .add_plugins(DefaultPlugins.set(WindowPlugin { - primary_window: Some(Window { - title: "Bevy game".to_string(), // ToDo - // Bind to canvas included in `index.html` - canvas: Some("#bevy".to_owned()), - // The canvas size is constrained in index.html and build/web/styles.css - fit_canvas_to_parent: true, - // Tells wasm not to override default event handling, like F5 and Ctrl+R - prevent_default_event_handling: false, - ..default() - }), - ..default() - })) + .add_plugins( + DefaultPlugins + .set(WindowPlugin { + primary_window: Some(Window { + title: "Bevy game".to_string(), // ToDo + // Bind to canvas included in `index.html` + canvas: Some("#bevy".to_owned()), + // The canvas size is constrained in index.html and build/web/styles.css + fit_canvas_to_parent: true, + // Tells wasm not to override default event handling, like F5 and Ctrl+R + prevent_default_event_handling: false, + ..default() + }), + ..default() + }) + .set(ImagePlugin::default_nearest()), + ) + .add_plugins(LdtkPlugin) .add_plugins(GamePlugin) - .add_systems(Startup, set_window_icon) + // .add_systems(Startup, set_window_icon) .run(); } diff --git a/src/menu.rs b/src/menu.rs index 4543a06..1a84533 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -1,6 +1,7 @@ use crate::loading::TextureAssets; use crate::GameState; use bevy::prelude::*; +use bevy_ecs_ldtk::prelude::*; pub struct MenuPlugin; @@ -10,7 +11,11 @@ impl Plugin for MenuPlugin { fn build(&self, app: &mut App) { app.add_systems(OnEnter(GameState::Menu), setup_menu) .add_systems(Update, click_play_button.run_if(in_state(GameState::Menu))) - .add_systems(OnExit(GameState::Menu), cleanup_menu); + .add_systems(OnExit(GameState::Menu), cleanup_menu) + // .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest())) + // .add_plugins(LdtkPlugin) + .insert_resource(LevelSelection::index(0)) + .add_systems(OnEnter(GameState::Playing), setup_level); } } @@ -32,9 +37,32 @@ impl Default for ButtonColors { #[derive(Component)] struct Menu; +fn setup_level( + mut commands: Commands, + asset_server: Res, + mut camera: Query<(&mut Transform, &mut OrthographicProjection), With>, +) { + // Change camera settings on playing state + info!("Change camera settings on playing state"); + for (mut transform, mut projection) in &mut camera { + projection.scale = 0.5; + transform.translation.x += 1280.0 / 4.0; + transform.translation.y += 720.0 / 4.0; + } + + // Spawn LDTK level + info!("Spawn LDTK level"); + commands.spawn(LdtkWorldBundle { + ldtk_handle: asset_server.load("world.ldtk"), + ..Default::default() + }); +} + fn setup_menu(mut commands: Commands, textures: Res) { info!("menu"); commands.spawn(Camera2dBundle::default()); + // let mut camera = Camera2dBundle::default(); + commands .spawn(( NodeBundle { From a1ee2da83db92bcce5a983430a14930b0417032a Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sat, 2 Dec 2023 15:58:24 -0800 Subject: [PATCH 04/49] Added pan camera plugin --- Cargo.lock | 10 ++++++++++ Cargo.toml | 1 + src/menu.rs | 7 ++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 894bd5a..aaea276 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -604,6 +604,7 @@ dependencies = [ "bevy_asset_loader", "bevy_ecs_ldtk", "bevy_kira_audio", + "bevy_pancam", "embed-resource", "image", "rand", @@ -806,6 +807,15 @@ dependencies = [ "glam", ] +[[package]] +name = "bevy_pancam" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0fc188c00741b4e7736cf1ba8e394abce7daf479284f5ca551408d36147c7bd" +dependencies = [ + "bevy", +] + [[package]] name = "bevy_pbr" version = "0.12.0" diff --git a/Cargo.toml b/Cargo.toml index 8310787..dd308b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,6 +61,7 @@ webbrowser = { version = "0.8", features = ["hardened"] } winit = { version = "0.28.7", default-features = false } image = { version = "0.24", default-features = false } bevy_ecs_ldtk = { git = "https://github.com/Trouv/bevy_ecs_ldtk.git", branch = "feat/bevy-0.12" } +bevy_pancam = "0.10.0" [build-dependencies] diff --git a/src/menu.rs b/src/menu.rs index 1a84533..37b30f0 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -2,6 +2,7 @@ use crate::loading::TextureAssets; use crate::GameState; use bevy::prelude::*; use bevy_ecs_ldtk::prelude::*; +use bevy_pancam::{PanCam, PanCamPlugin}; pub struct MenuPlugin; @@ -15,7 +16,8 @@ impl Plugin for MenuPlugin { // .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest())) // .add_plugins(LdtkPlugin) .insert_resource(LevelSelection::index(0)) - .add_systems(OnEnter(GameState::Playing), setup_level); + .add_systems(OnEnter(GameState::Playing), setup_level) + .add_plugins(PanCamPlugin::default()); } } @@ -60,8 +62,7 @@ fn setup_level( fn setup_menu(mut commands: Commands, textures: Res) { info!("menu"); - commands.spawn(Camera2dBundle::default()); - // let mut camera = Camera2dBundle::default(); + commands.spawn(Camera2dBundle::default()).insert(PanCam::default()); commands .spawn(( From 470fa6bbfbcc4fcc5ddd614055db92b6c61f37ef Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sat, 2 Dec 2023 18:24:53 -0800 Subject: [PATCH 05/49] Limit the zoom in and zoom out of camera --- src/main.rs | 5 ++--- src/menu.rs | 14 +++++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 1f100f9..0c29354 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,8 +9,6 @@ use bevy_game::GamePlugin; // ToDo: Replace bevy_game with your new crate name. use std::io::Cursor; use winit::window::Icon; -use bevy_ecs_ldtk::prelude::*; - fn main() { App::new() .insert_resource(Msaa::Off) @@ -30,10 +28,11 @@ fn main() { }), ..default() }) + // Set default texture sampling to nearest neighbor for pixel art .set(ImagePlugin::default_nearest()), ) - .add_plugins(LdtkPlugin) .add_plugins(GamePlugin) + // Enable / Disable window icon for mac compilation // .add_systems(Startup, set_window_icon) .run(); } diff --git a/src/menu.rs b/src/menu.rs index 37b30f0..b23b6dd 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -13,10 +13,10 @@ impl Plugin for MenuPlugin { app.add_systems(OnEnter(GameState::Menu), setup_menu) .add_systems(Update, click_play_button.run_if(in_state(GameState::Menu))) .add_systems(OnExit(GameState::Menu), cleanup_menu) - // .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest())) - // .add_plugins(LdtkPlugin) + // LDtk level selection resource .insert_resource(LevelSelection::index(0)) .add_systems(OnEnter(GameState::Playing), setup_level) + .add_plugins(LdtkPlugin) .add_plugins(PanCamPlugin::default()); } } @@ -62,7 +62,15 @@ fn setup_level( fn setup_menu(mut commands: Commands, textures: Res) { info!("menu"); - commands.spawn(Camera2dBundle::default()).insert(PanCam::default()); + commands.spawn(Camera2dBundle::default()).insert(PanCam { + grab_buttons: vec![MouseButton::Left, MouseButton::Middle], // which buttons should drag the camera + enabled: true, // when false, controls are disabled. See toggle example. + zoom_to_cursor: true, // whether to zoom towards the mouse or the center of the screen + min_scale: 1., // prevent the camera from zooming too far in + max_scale: Some(40.), // prevent the camera from zooming too far out + // Optinally specify min_x, max_x, min_y, max_y to limit the camera's movement + ..Default::default() + }); commands .spawn(( From 3a19513964eaca7c474e6e40c87d29306764768a Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sun, 3 Dec 2023 09:39:04 -0800 Subject: [PATCH 06/49] Ignore vcscode directory --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index f2401c7..494e1c4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ target/ .DS_Store dist/ + +.vscode/ From 0227d261a45169559341e457bb5f844a696eacf6 Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sun, 3 Dec 2023 09:39:41 -0800 Subject: [PATCH 07/49] Added world plugin for ldtk --- assets/airplanes.png | Bin 0 -> 2255 bytes assets/shmup.png | Bin 0 -> 3759 bytes assets/testworld.ldtk | 643 +++++++++++++++++++++++++++++ assets/world.ldtk | 924 +++++++++++++++++++++++++++--------------- src/lib.rs | 6 + src/menu.rs | 46 +-- src/world.rs | 49 +++ 7 files changed, 1329 insertions(+), 339 deletions(-) create mode 100644 assets/airplanes.png create mode 100644 assets/shmup.png create mode 100644 assets/testworld.ldtk create mode 100644 src/world.rs diff --git a/assets/airplanes.png b/assets/airplanes.png new file mode 100644 index 0000000000000000000000000000000000000000..e586a1b6c809df382ac4fbce94500defa3f4c28e GIT binary patch literal 2255 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 xNG?IabE#_Tn?uJTvl0`afd!%Vz)p literal 0 HcmV?d00001 diff --git a/assets/testworld.ldtk b/assets/testworld.ldtk new file mode 100644 index 0000000..7a662bf --- /dev/null +++ b/assets/testworld.ldtk @@ -0,0 +1,643 @@ +{ + "__header__": { + "fileType": "LDtk Project JSON", + "app": "LDtk", + "doc": "https://ldtk.io/json", + "schema": "https://ldtk.io/files/JSON_SCHEMA.json", + "appAuthor": "Sebastien 'deepnight' Benard", + "appVersion": "1.4.1", + "url": "https://ldtk.io" + }, + "iid": "34d44ef0-8990-11ee-965e-61f7a83bc674", + "jsonVersion": "1.4.1", + "appBuildId": 471015, + "nextUid": 11, + "identifierStyle": "Capitalize", + "toc": [], + "worldLayout": "Free", + "worldGridWidth": 256, + "worldGridHeight": 256, + "defaultLevelWidth": 256, + "defaultLevelHeight": 256, + "defaultPivotX": 0, + "defaultPivotY": 0, + "defaultGridSize": 16, + "defaultEntityWidth": 16, + "defaultEntityHeight": 16, + "bgColor": "#40465B", + "defaultLevelBgColor": "#696A79", + "minifyJson": false, + "externalLevels": false, + "exportTiled": false, + "simplifiedExport": false, + "imageExportMode": "None", + "exportLevelBg": true, + "pngFilePattern": null, + "backupOnSave": false, + "backupLimit": 10, + "backupRelPath": null, + "levelNamePattern": "Level_%idx", + "tutorialDesc": null, + "customCommands": [], + "flags": [], + "defs": { "layers": [ + { + "__type": "Entities", + "identifier": "Entities", + "type": "Entities", + "uid": 10, + "doc": null, + "uiColor": null, + "gridSize": 16, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 0.6, + "hideInList": false, + "hideFieldsWhenInactive": true, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": null, + "tilePivotX": 0, + "tilePivotY": 0 + }, + { + "__type": "IntGrid", + "identifier": "Walls", + "type": "IntGrid", + "uid": 1, + "doc": null, + "uiColor": null, + "gridSize": 16, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "intGridValues": [{ "value": 1, "identifier": "Wall", "color": "#000000", "tile": null, "groupUid": 0 }], + "intGridValuesGroups": [], + "autoRuleGroups": [ + { "uid": 6, "name": "Walls", "color": null, "icon": null, "active": true, "isOptional": false, "rules": [ + { + "uid": 7, + "active": true, + "size": 1, + "tileIds": [79], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [1], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 5720882, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], "usesWizard": false }, + { "uid": 4, "name": "Background", "color": null, "icon": null, "active": true, "isOptional": false, "rules": [ + { + "uid": 5, + "active": true, + "size": 1, + "tileIds": [0], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 4808950, + "perlinScale": 0.2, + "perlinOctaves": 2 + } + ], "usesWizard": false } + ], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 2, + "tilePivotX": 0, + "tilePivotY": 0 + } + ], "entities": [ + { + "identifier": "Player", + "uid": 8, + "tags": [], + "exportToToc": false, + "doc": null, + "width": 16, + "height": 16, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#BE4A2F", + "renderMode": "Tile", + "showName": true, + "tilesetId": 2, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 2, "x": 256, "y": 128, "w": 16, "h": 16 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] + }, + { + "identifier": "Goal", + "uid": 9, + "tags": [], + "exportToToc": false, + "doc": null, + "width": 16, + "height": 16, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#D77643", + "renderMode": "Tile", + "showName": true, + "tilesetId": 2, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 2, "x": 256, "y": 48, "w": 16, "h": 16 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] + } + ], "tilesets": [ + { + "__cWid": 18, + "__cHei": 11, + "identifier": "Art", + "uid": 2, + "relPath": "tinybattle.png", + "embedAtlas": null, + "pxWid": 288, + "pxHei": 176, + "tileGridSize": 16, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "111110000000000000111110000000000000111100000000000000111100000000000000111100000000000000111100000000000000001000000000000000001010000000000000111110000000000000001010000000000000000000000000000000", + "averageColors": "f8c6f8c6f9b6f9cbf9cbc885b7788667d889e889c899c789d778a678c889e778a778a778f8caf8ccf8caf8ddf8dd9667b778d789d7a6e796c8a7c796d795a685c796e695a787a787f8ddf7dff8ddf7df83798379738a8379d48be48ac59bc48ad37aa379c38ae37aa579a579f8cbf7ddf8dbf9de738a737a737ab656db55eb55cb66cb55da44a943cb55ea44a966a966f8def9ccf8def8de8379737a737a6fc6dc85eb85cc86cc85db74aa63cb84eb74a976a976f8def7def7dff7df6574c778c877c778c778d778a667c778d778c889c789a7899767a767f789f789f789f789a574c686c886c686c686d687a675c677d676c798c797a7979776a775f789e789f679e789f789c47ac778c47ac57ad57aa369c679d579c68ac58aa58a9668a668f789f679f678f679f7cec955ca65c955c956d966a944c866d856c977c967aa669855a955f789e789f679e789f678ca75ca75ca76ca76da76a964c876d976ca87ca87aa869965a965487747774877487747774877487747774888487747665875794478656888594469992567" + } + } + ], "enums": [], "externalEnums": [], "levelFields": [] }, + "levels": [ + { + "identifier": "Level_0", + "iid": "34d47600-8990-11ee-965e-2732e65770a0", + "uid": 0, + "worldX": 0, + "worldY": 0, + "worldDepth": 0, + "pxWid": 256, + "pxHei": 256, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": true, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 16, + "__cHei": 16, + "__gridSize": 16, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "b7e8fac0-8990-11ee-965e-b13233fffc4b", + "levelId": 0, + "layerDefUid": 10, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 6226910, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "Player", + "__grid": [2,13], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 2, "x": 256, "y": 128, "w": 16, "h": 16 }, + "__smartColor": "#BE4A2F", + "__worldX": 32, + "__worldY": 208, + "iid": "be222650-8990-11ee-965e-7972d0a0edcd", + "width": 16, + "height": 16, + "defUid": 8, + "px": [32,208], + "fieldInstances": [] + }, + { + "__identifier": "Goal", + "__grid": [12,2], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 2, "x": 256, "y": 48, "w": 16, "h": 16 }, + "__smartColor": "#D77643", + "__worldX": 192, + "__worldY": 32, + "iid": "bff9f390-8990-11ee-965e-4f4b23f059fb", + "width": 16, + "height": 16, + "defUid": 9, + "px": [192,32], + "fieldInstances": [] + } + ] + }, + { + "__identifier": "Walls", + "__type": "IntGrid", + "__cWid": 16, + "__cHei": 16, + "__gridSize": 16, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 2, + "__tilesetRelPath": "tinybattle.png", + "iid": "5ab6cb70-8990-11ee-965e-7dd01c18e0cb", + "levelId": 0, + "layerDefUid": 1, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, + 0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, + 0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0 + ], + "autoLayerTiles": [ + { "px": [0,0], "src": [0,0], "f": 0, "t": 0, "d": [5,0], "a": 1 }, + { "px": [16,0], "src": [0,0], "f": 0, "t": 0, "d": [5,1], "a": 1 }, + { "px": [32,0], "src": [0,0], "f": 0, "t": 0, "d": [5,2], "a": 1 }, + { "px": [48,0], "src": [0,0], "f": 0, "t": 0, "d": [5,3], "a": 1 }, + { "px": [64,0], "src": [0,0], "f": 0, "t": 0, "d": [5,4], "a": 1 }, + { "px": [80,0], "src": [0,0], "f": 0, "t": 0, "d": [5,5], "a": 1 }, + { "px": [96,0], "src": [0,0], "f": 0, "t": 0, "d": [5,6], "a": 1 }, + { "px": [112,0], "src": [0,0], "f": 0, "t": 0, "d": [5,7], "a": 1 }, + { "px": [128,0], "src": [0,0], "f": 0, "t": 0, "d": [5,8], "a": 1 }, + { "px": [144,0], "src": [0,0], "f": 0, "t": 0, "d": [5,9], "a": 1 }, + { "px": [160,0], "src": [0,0], "f": 0, "t": 0, "d": [5,10], "a": 1 }, + { "px": [176,0], "src": [0,0], "f": 0, "t": 0, "d": [5,11], "a": 1 }, + { "px": [192,0], "src": [0,0], "f": 0, "t": 0, "d": [5,12], "a": 1 }, + { "px": [208,0], "src": [0,0], "f": 0, "t": 0, "d": [5,13], "a": 1 }, + { "px": [224,0], "src": [0,0], "f": 0, "t": 0, "d": [5,14], "a": 1 }, + { "px": [240,0], "src": [0,0], "f": 0, "t": 0, "d": [5,15], "a": 1 }, + { "px": [0,16], "src": [0,0], "f": 0, "t": 0, "d": [5,16], "a": 1 }, + { "px": [16,16], "src": [0,0], "f": 0, "t": 0, "d": [5,17], "a": 1 }, + { "px": [32,16], "src": [0,0], "f": 0, "t": 0, "d": [5,18], "a": 1 }, + { "px": [48,16], "src": [0,0], "f": 0, "t": 0, "d": [5,19], "a": 1 }, + { "px": [64,16], "src": [0,0], "f": 0, "t": 0, "d": [5,20], "a": 1 }, + { "px": [80,16], "src": [0,0], "f": 0, "t": 0, "d": [5,21], "a": 1 }, + { "px": [96,16], "src": [0,0], "f": 0, "t": 0, "d": [5,22], "a": 1 }, + { "px": [112,16], "src": [0,0], "f": 0, "t": 0, "d": [5,23], "a": 1 }, + { "px": [128,16], "src": [0,0], "f": 0, "t": 0, "d": [5,24], "a": 1 }, + { "px": [144,16], "src": [0,0], "f": 0, "t": 0, "d": [5,25], "a": 1 }, + { "px": [160,16], "src": [0,0], "f": 0, "t": 0, "d": [5,26], "a": 1 }, + { "px": [176,16], "src": [0,0], "f": 0, "t": 0, "d": [5,27], "a": 1 }, + { "px": [192,16], "src": [0,0], "f": 0, "t": 0, "d": [5,28], "a": 1 }, + { "px": [208,16], "src": [0,0], "f": 0, "t": 0, "d": [5,29], "a": 1 }, + { "px": [224,16], "src": [0,0], "f": 0, "t": 0, "d": [5,30], "a": 1 }, + { "px": [240,16], "src": [0,0], "f": 0, "t": 0, "d": [5,31], "a": 1 }, + { "px": [0,32], "src": [0,0], "f": 0, "t": 0, "d": [5,32], "a": 1 }, + { "px": [16,32], "src": [0,0], "f": 0, "t": 0, "d": [5,33], "a": 1 }, + { "px": [32,32], "src": [0,0], "f": 0, "t": 0, "d": [5,34], "a": 1 }, + { "px": [48,32], "src": [0,0], "f": 0, "t": 0, "d": [5,35], "a": 1 }, + { "px": [64,32], "src": [0,0], "f": 0, "t": 0, "d": [5,36], "a": 1 }, + { "px": [80,32], "src": [0,0], "f": 0, "t": 0, "d": [5,37], "a": 1 }, + { "px": [96,32], "src": [0,0], "f": 0, "t": 0, "d": [5,38], "a": 1 }, + { "px": [112,32], "src": [0,0], "f": 0, "t": 0, "d": [5,39], "a": 1 }, + { "px": [128,32], "src": [0,0], "f": 0, "t": 0, "d": [5,40], "a": 1 }, + { "px": [144,32], "src": [0,0], "f": 0, "t": 0, "d": [5,41], "a": 1 }, + { "px": [160,32], "src": [0,0], "f": 0, "t": 0, "d": [5,42], "a": 1 }, + { "px": [176,32], "src": [0,0], "f": 0, "t": 0, "d": [5,43], "a": 1 }, + { "px": [192,32], "src": [0,0], "f": 0, "t": 0, "d": [5,44], "a": 1 }, + { "px": [208,32], "src": [0,0], "f": 0, "t": 0, "d": [5,45], "a": 1 }, + { "px": [224,32], "src": [0,0], "f": 0, "t": 0, "d": [5,46], "a": 1 }, + { "px": [240,32], "src": [0,0], "f": 0, "t": 0, "d": [5,47], "a": 1 }, + { "px": [0,48], "src": [0,0], "f": 0, "t": 0, "d": [5,48], "a": 1 }, + { "px": [16,48], "src": [0,0], "f": 0, "t": 0, "d": [5,49], "a": 1 }, + { "px": [32,48], "src": [0,0], "f": 0, "t": 0, "d": [5,50], "a": 1 }, + { "px": [64,48], "src": [0,0], "f": 0, "t": 0, "d": [5,52], "a": 1 }, + { "px": [80,48], "src": [0,0], "f": 0, "t": 0, "d": [5,53], "a": 1 }, + { "px": [96,48], "src": [0,0], "f": 0, "t": 0, "d": [5,54], "a": 1 }, + { "px": [112,48], "src": [0,0], "f": 0, "t": 0, "d": [5,55], "a": 1 }, + { "px": [128,48], "src": [0,0], "f": 0, "t": 0, "d": [5,56], "a": 1 }, + { "px": [144,48], "src": [0,0], "f": 0, "t": 0, "d": [5,57], "a": 1 }, + { "px": [176,48], "src": [0,0], "f": 0, "t": 0, "d": [5,59], "a": 1 }, + { "px": [192,48], "src": [0,0], "f": 0, "t": 0, "d": [5,60], "a": 1 }, + { "px": [208,48], "src": [0,0], "f": 0, "t": 0, "d": [5,61], "a": 1 }, + { "px": [224,48], "src": [0,0], "f": 0, "t": 0, "d": [5,62], "a": 1 }, + { "px": [240,48], "src": [0,0], "f": 0, "t": 0, "d": [5,63], "a": 1 }, + { "px": [0,64], "src": [0,0], "f": 0, "t": 0, "d": [5,64], "a": 1 }, + { "px": [16,64], "src": [0,0], "f": 0, "t": 0, "d": [5,65], "a": 1 }, + { "px": [32,64], "src": [0,0], "f": 0, "t": 0, "d": [5,66], "a": 1 }, + { "px": [64,64], "src": [0,0], "f": 0, "t": 0, "d": [5,68], "a": 1 }, + { "px": [80,64], "src": [0,0], "f": 0, "t": 0, "d": [5,69], "a": 1 }, + { "px": [96,64], "src": [0,0], "f": 0, "t": 0, "d": [5,70], "a": 1 }, + { "px": [112,64], "src": [0,0], "f": 0, "t": 0, "d": [5,71], "a": 1 }, + { "px": [128,64], "src": [0,0], "f": 0, "t": 0, "d": [5,72], "a": 1 }, + { "px": [144,64], "src": [0,0], "f": 0, "t": 0, "d": [5,73], "a": 1 }, + { "px": [176,64], "src": [0,0], "f": 0, "t": 0, "d": [5,75], "a": 1 }, + { "px": [192,64], "src": [0,0], "f": 0, "t": 0, "d": [5,76], "a": 1 }, + { "px": [208,64], "src": [0,0], "f": 0, "t": 0, "d": [5,77], "a": 1 }, + { "px": [224,64], "src": [0,0], "f": 0, "t": 0, "d": [5,78], "a": 1 }, + { "px": [240,64], "src": [0,0], "f": 0, "t": 0, "d": [5,79], "a": 1 }, + { "px": [0,80], "src": [0,0], "f": 0, "t": 0, "d": [5,80], "a": 1 }, + { "px": [16,80], "src": [0,0], "f": 0, "t": 0, "d": [5,81], "a": 1 }, + { "px": [32,80], "src": [0,0], "f": 0, "t": 0, "d": [5,82], "a": 1 }, + { "px": [64,80], "src": [0,0], "f": 0, "t": 0, "d": [5,84], "a": 1 }, + { "px": [80,80], "src": [0,0], "f": 0, "t": 0, "d": [5,85], "a": 1 }, + { "px": [96,80], "src": [0,0], "f": 0, "t": 0, "d": [5,86], "a": 1 }, + { "px": [112,80], "src": [0,0], "f": 0, "t": 0, "d": [5,87], "a": 1 }, + { "px": [128,80], "src": [0,0], "f": 0, "t": 0, "d": [5,88], "a": 1 }, + { "px": [144,80], "src": [0,0], "f": 0, "t": 0, "d": [5,89], "a": 1 }, + { "px": [176,80], "src": [0,0], "f": 0, "t": 0, "d": [5,91], "a": 1 }, + { "px": [192,80], "src": [0,0], "f": 0, "t": 0, "d": [5,92], "a": 1 }, + { "px": [208,80], "src": [0,0], "f": 0, "t": 0, "d": [5,93], "a": 1 }, + { "px": [224,80], "src": [0,0], "f": 0, "t": 0, "d": [5,94], "a": 1 }, + { "px": [240,80], "src": [0,0], "f": 0, "t": 0, "d": [5,95], "a": 1 }, + { "px": [0,96], "src": [0,0], "f": 0, "t": 0, "d": [5,96], "a": 1 }, + { "px": [16,96], "src": [0,0], "f": 0, "t": 0, "d": [5,97], "a": 1 }, + { "px": [32,96], "src": [0,0], "f": 0, "t": 0, "d": [5,98], "a": 1 }, + { "px": [48,96], "src": [0,0], "f": 0, "t": 0, "d": [5,99], "a": 1 }, + { "px": [64,96], "src": [0,0], "f": 0, "t": 0, "d": [5,100], "a": 1 }, + { "px": [80,96], "src": [0,0], "f": 0, "t": 0, "d": [5,101], "a": 1 }, + { "px": [96,96], "src": [0,0], "f": 0, "t": 0, "d": [5,102], "a": 1 }, + { "px": [112,96], "src": [0,0], "f": 0, "t": 0, "d": [5,103], "a": 1 }, + { "px": [128,96], "src": [0,0], "f": 0, "t": 0, "d": [5,104], "a": 1 }, + { "px": [144,96], "src": [0,0], "f": 0, "t": 0, "d": [5,105], "a": 1 }, + { "px": [160,96], "src": [0,0], "f": 0, "t": 0, "d": [5,106], "a": 1 }, + { "px": [176,96], "src": [0,0], "f": 0, "t": 0, "d": [5,107], "a": 1 }, + { "px": [192,96], "src": [0,0], "f": 0, "t": 0, "d": [5,108], "a": 1 }, + { "px": [208,96], "src": [0,0], "f": 0, "t": 0, "d": [5,109], "a": 1 }, + { "px": [224,96], "src": [0,0], "f": 0, "t": 0, "d": [5,110], "a": 1 }, + { "px": [240,96], "src": [0,0], "f": 0, "t": 0, "d": [5,111], "a": 1 }, + { "px": [0,112], "src": [0,0], "f": 0, "t": 0, "d": [5,112], "a": 1 }, + { "px": [16,112], "src": [0,0], "f": 0, "t": 0, "d": [5,113], "a": 1 }, + { "px": [32,112], "src": [0,0], "f": 0, "t": 0, "d": [5,114], "a": 1 }, + { "px": [48,112], "src": [0,0], "f": 0, "t": 0, "d": [5,115], "a": 1 }, + { "px": [64,112], "src": [0,0], "f": 0, "t": 0, "d": [5,116], "a": 1 }, + { "px": [80,112], "src": [0,0], "f": 0, "t": 0, "d": [5,117], "a": 1 }, + { "px": [96,112], "src": [0,0], "f": 0, "t": 0, "d": [5,118], "a": 1 }, + { "px": [112,112], "src": [0,0], "f": 0, "t": 0, "d": [5,119], "a": 1 }, + { "px": [128,112], "src": [0,0], "f": 0, "t": 0, "d": [5,120], "a": 1 }, + { "px": [144,112], "src": [0,0], "f": 0, "t": 0, "d": [5,121], "a": 1 }, + { "px": [160,112], "src": [0,0], "f": 0, "t": 0, "d": [5,122], "a": 1 }, + { "px": [176,112], "src": [0,0], "f": 0, "t": 0, "d": [5,123], "a": 1 }, + { "px": [192,112], "src": [0,0], "f": 0, "t": 0, "d": [5,124], "a": 1 }, + { "px": [208,112], "src": [0,0], "f": 0, "t": 0, "d": [5,125], "a": 1 }, + { "px": [224,112], "src": [0,0], "f": 0, "t": 0, "d": [5,126], "a": 1 }, + { "px": [240,112], "src": [0,0], "f": 0, "t": 0, "d": [5,127], "a": 1 }, + { "px": [0,128], "src": [0,0], "f": 0, "t": 0, "d": [5,128], "a": 1 }, + { "px": [16,128], "src": [0,0], "f": 0, "t": 0, "d": [5,129], "a": 1 }, + { "px": [48,128], "src": [0,0], "f": 0, "t": 0, "d": [5,131], "a": 1 }, + { "px": [64,128], "src": [0,0], "f": 0, "t": 0, "d": [5,132], "a": 1 }, + { "px": [80,128], "src": [0,0], "f": 0, "t": 0, "d": [5,133], "a": 1 }, + { "px": [96,128], "src": [0,0], "f": 0, "t": 0, "d": [5,134], "a": 1 }, + { "px": [112,128], "src": [0,0], "f": 0, "t": 0, "d": [5,135], "a": 1 }, + { "px": [128,128], "src": [0,0], "f": 0, "t": 0, "d": [5,136], "a": 1 }, + { "px": [144,128], "src": [0,0], "f": 0, "t": 0, "d": [5,137], "a": 1 }, + { "px": [160,128], "src": [0,0], "f": 0, "t": 0, "d": [5,138], "a": 1 }, + { "px": [176,128], "src": [0,0], "f": 0, "t": 0, "d": [5,139], "a": 1 }, + { "px": [192,128], "src": [0,0], "f": 0, "t": 0, "d": [5,140], "a": 1 }, + { "px": [208,128], "src": [0,0], "f": 0, "t": 0, "d": [5,141], "a": 1 }, + { "px": [224,128], "src": [0,0], "f": 0, "t": 0, "d": [5,142], "a": 1 }, + { "px": [240,128], "src": [0,0], "f": 0, "t": 0, "d": [5,143], "a": 1 }, + { "px": [0,144], "src": [0,0], "f": 0, "t": 0, "d": [5,144], "a": 1 }, + { "px": [16,144], "src": [0,0], "f": 0, "t": 0, "d": [5,145], "a": 1 }, + { "px": [64,144], "src": [0,0], "f": 0, "t": 0, "d": [5,148], "a": 1 }, + { "px": [80,144], "src": [0,0], "f": 0, "t": 0, "d": [5,149], "a": 1 }, + { "px": [96,144], "src": [0,0], "f": 0, "t": 0, "d": [5,150], "a": 1 }, + { "px": [112,144], "src": [0,0], "f": 0, "t": 0, "d": [5,151], "a": 1 }, + { "px": [128,144], "src": [0,0], "f": 0, "t": 0, "d": [5,152], "a": 1 }, + { "px": [144,144], "src": [0,0], "f": 0, "t": 0, "d": [5,153], "a": 1 }, + { "px": [160,144], "src": [0,0], "f": 0, "t": 0, "d": [5,154], "a": 1 }, + { "px": [176,144], "src": [0,0], "f": 0, "t": 0, "d": [5,155], "a": 1 }, + { "px": [224,144], "src": [0,0], "f": 0, "t": 0, "d": [5,158], "a": 1 }, + { "px": [240,144], "src": [0,0], "f": 0, "t": 0, "d": [5,159], "a": 1 }, + { "px": [0,160], "src": [0,0], "f": 0, "t": 0, "d": [5,160], "a": 1 }, + { "px": [16,160], "src": [0,0], "f": 0, "t": 0, "d": [5,161], "a": 1 }, + { "px": [32,160], "src": [0,0], "f": 0, "t": 0, "d": [5,162], "a": 1 }, + { "px": [64,160], "src": [0,0], "f": 0, "t": 0, "d": [5,164], "a": 1 }, + { "px": [80,160], "src": [0,0], "f": 0, "t": 0, "d": [5,165], "a": 1 }, + { "px": [96,160], "src": [0,0], "f": 0, "t": 0, "d": [5,166], "a": 1 }, + { "px": [112,160], "src": [0,0], "f": 0, "t": 0, "d": [5,167], "a": 1 }, + { "px": [128,160], "src": [0,0], "f": 0, "t": 0, "d": [5,168], "a": 1 }, + { "px": [144,160], "src": [0,0], "f": 0, "t": 0, "d": [5,169], "a": 1 }, + { "px": [160,160], "src": [0,0], "f": 0, "t": 0, "d": [5,170], "a": 1 }, + { "px": [176,160], "src": [0,0], "f": 0, "t": 0, "d": [5,171], "a": 1 }, + { "px": [208,160], "src": [0,0], "f": 0, "t": 0, "d": [5,173], "a": 1 }, + { "px": [224,160], "src": [0,0], "f": 0, "t": 0, "d": [5,174], "a": 1 }, + { "px": [240,160], "src": [0,0], "f": 0, "t": 0, "d": [5,175], "a": 1 }, + { "px": [0,176], "src": [0,0], "f": 0, "t": 0, "d": [5,176], "a": 1 }, + { "px": [16,176], "src": [0,0], "f": 0, "t": 0, "d": [5,177], "a": 1 }, + { "px": [32,176], "src": [0,0], "f": 0, "t": 0, "d": [5,178], "a": 1 }, + { "px": [80,176], "src": [0,0], "f": 0, "t": 0, "d": [5,181], "a": 1 }, + { "px": [96,176], "src": [0,0], "f": 0, "t": 0, "d": [5,182], "a": 1 }, + { "px": [112,176], "src": [0,0], "f": 0, "t": 0, "d": [5,183], "a": 1 }, + { "px": [128,176], "src": [0,0], "f": 0, "t": 0, "d": [5,184], "a": 1 }, + { "px": [144,176], "src": [0,0], "f": 0, "t": 0, "d": [5,185], "a": 1 }, + { "px": [160,176], "src": [0,0], "f": 0, "t": 0, "d": [5,186], "a": 1 }, + { "px": [208,176], "src": [0,0], "f": 0, "t": 0, "d": [5,189], "a": 1 }, + { "px": [224,176], "src": [0,0], "f": 0, "t": 0, "d": [5,190], "a": 1 }, + { "px": [240,176], "src": [0,0], "f": 0, "t": 0, "d": [5,191], "a": 1 }, + { "px": [0,192], "src": [0,0], "f": 0, "t": 0, "d": [5,192], "a": 1 }, + { "px": [16,192], "src": [0,0], "f": 0, "t": 0, "d": [5,193], "a": 1 }, + { "px": [32,192], "src": [0,0], "f": 0, "t": 0, "d": [5,194], "a": 1 }, + { "px": [48,192], "src": [0,0], "f": 0, "t": 0, "d": [5,195], "a": 1 }, + { "px": [176,192], "src": [0,0], "f": 0, "t": 0, "d": [5,203], "a": 1 }, + { "px": [192,192], "src": [0,0], "f": 0, "t": 0, "d": [5,204], "a": 1 }, + { "px": [208,192], "src": [0,0], "f": 0, "t": 0, "d": [5,205], "a": 1 }, + { "px": [224,192], "src": [0,0], "f": 0, "t": 0, "d": [5,206], "a": 1 }, + { "px": [240,192], "src": [0,0], "f": 0, "t": 0, "d": [5,207], "a": 1 }, + { "px": [0,208], "src": [0,0], "f": 0, "t": 0, "d": [5,208], "a": 1 }, + { "px": [16,208], "src": [0,0], "f": 0, "t": 0, "d": [5,209], "a": 1 }, + { "px": [32,208], "src": [0,0], "f": 0, "t": 0, "d": [5,210], "a": 1 }, + { "px": [48,208], "src": [0,0], "f": 0, "t": 0, "d": [5,211], "a": 1 }, + { "px": [64,208], "src": [0,0], "f": 0, "t": 0, "d": [5,212], "a": 1 }, + { "px": [80,208], "src": [0,0], "f": 0, "t": 0, "d": [5,213], "a": 1 }, + { "px": [96,208], "src": [0,0], "f": 0, "t": 0, "d": [5,214], "a": 1 }, + { "px": [112,208], "src": [0,0], "f": 0, "t": 0, "d": [5,215], "a": 1 }, + { "px": [160,208], "src": [0,0], "f": 0, "t": 0, "d": [5,218], "a": 1 }, + { "px": [176,208], "src": [0,0], "f": 0, "t": 0, "d": [5,219], "a": 1 }, + { "px": [192,208], "src": [0,0], "f": 0, "t": 0, "d": [5,220], "a": 1 }, + { "px": [208,208], "src": [0,0], "f": 0, "t": 0, "d": [5,221], "a": 1 }, + { "px": [224,208], "src": [0,0], "f": 0, "t": 0, "d": [5,222], "a": 1 }, + { "px": [240,208], "src": [0,0], "f": 0, "t": 0, "d": [5,223], "a": 1 }, + { "px": [0,224], "src": [0,0], "f": 0, "t": 0, "d": [5,224], "a": 1 }, + { "px": [16,224], "src": [0,0], "f": 0, "t": 0, "d": [5,225], "a": 1 }, + { "px": [32,224], "src": [0,0], "f": 0, "t": 0, "d": [5,226], "a": 1 }, + { "px": [48,224], "src": [0,0], "f": 0, "t": 0, "d": [5,227], "a": 1 }, + { "px": [64,224], "src": [0,0], "f": 0, "t": 0, "d": [5,228], "a": 1 }, + { "px": [80,224], "src": [0,0], "f": 0, "t": 0, "d": [5,229], "a": 1 }, + { "px": [96,224], "src": [0,0], "f": 0, "t": 0, "d": [5,230], "a": 1 }, + { "px": [112,224], "src": [0,0], "f": 0, "t": 0, "d": [5,231], "a": 1 }, + { "px": [128,224], "src": [0,0], "f": 0, "t": 0, "d": [5,232], "a": 1 }, + { "px": [144,224], "src": [0,0], "f": 0, "t": 0, "d": [5,233], "a": 1 }, + { "px": [160,224], "src": [0,0], "f": 0, "t": 0, "d": [5,234], "a": 1 }, + { "px": [176,224], "src": [0,0], "f": 0, "t": 0, "d": [5,235], "a": 1 }, + { "px": [192,224], "src": [0,0], "f": 0, "t": 0, "d": [5,236], "a": 1 }, + { "px": [208,224], "src": [0,0], "f": 0, "t": 0, "d": [5,237], "a": 1 }, + { "px": [224,224], "src": [0,0], "f": 0, "t": 0, "d": [5,238], "a": 1 }, + { "px": [240,224], "src": [0,0], "f": 0, "t": 0, "d": [5,239], "a": 1 }, + { "px": [0,240], "src": [0,0], "f": 0, "t": 0, "d": [5,240], "a": 1 }, + { "px": [16,240], "src": [0,0], "f": 0, "t": 0, "d": [5,241], "a": 1 }, + { "px": [32,240], "src": [0,0], "f": 0, "t": 0, "d": [5,242], "a": 1 }, + { "px": [48,240], "src": [0,0], "f": 0, "t": 0, "d": [5,243], "a": 1 }, + { "px": [64,240], "src": [0,0], "f": 0, "t": 0, "d": [5,244], "a": 1 }, + { "px": [80,240], "src": [0,0], "f": 0, "t": 0, "d": [5,245], "a": 1 }, + { "px": [96,240], "src": [0,0], "f": 0, "t": 0, "d": [5,246], "a": 1 }, + { "px": [112,240], "src": [0,0], "f": 0, "t": 0, "d": [5,247], "a": 1 }, + { "px": [128,240], "src": [0,0], "f": 0, "t": 0, "d": [5,248], "a": 1 }, + { "px": [144,240], "src": [0,0], "f": 0, "t": 0, "d": [5,249], "a": 1 }, + { "px": [160,240], "src": [0,0], "f": 0, "t": 0, "d": [5,250], "a": 1 }, + { "px": [176,240], "src": [0,0], "f": 0, "t": 0, "d": [5,251], "a": 1 }, + { "px": [192,240], "src": [0,0], "f": 0, "t": 0, "d": [5,252], "a": 1 }, + { "px": [208,240], "src": [0,0], "f": 0, "t": 0, "d": [5,253], "a": 1 }, + { "px": [224,240], "src": [0,0], "f": 0, "t": 0, "d": [5,254], "a": 1 }, + { "px": [240,240], "src": [0,0], "f": 0, "t": 0, "d": [5,255], "a": 1 }, + { "px": [48,48], "src": [112,64], "f": 0, "t": 79, "d": [7,51], "a": 1 }, + { "px": [160,48], "src": [112,64], "f": 0, "t": 79, "d": [7,58], "a": 1 }, + { "px": [48,64], "src": [112,64], "f": 0, "t": 79, "d": [7,67], "a": 1 }, + { "px": [160,64], "src": [112,64], "f": 0, "t": 79, "d": [7,74], "a": 1 }, + { "px": [48,80], "src": [112,64], "f": 0, "t": 79, "d": [7,83], "a": 1 }, + { "px": [160,80], "src": [112,64], "f": 0, "t": 79, "d": [7,90], "a": 1 }, + { "px": [32,128], "src": [112,64], "f": 0, "t": 79, "d": [7,130], "a": 1 }, + { "px": [32,144], "src": [112,64], "f": 0, "t": 79, "d": [7,146], "a": 1 }, + { "px": [48,144], "src": [112,64], "f": 0, "t": 79, "d": [7,147], "a": 1 }, + { "px": [192,144], "src": [112,64], "f": 0, "t": 79, "d": [7,156], "a": 1 }, + { "px": [208,144], "src": [112,64], "f": 0, "t": 79, "d": [7,157], "a": 1 }, + { "px": [48,160], "src": [112,64], "f": 0, "t": 79, "d": [7,163], "a": 1 }, + { "px": [192,160], "src": [112,64], "f": 0, "t": 79, "d": [7,172], "a": 1 }, + { "px": [48,176], "src": [112,64], "f": 0, "t": 79, "d": [7,179], "a": 1 }, + { "px": [64,176], "src": [112,64], "f": 0, "t": 79, "d": [7,180], "a": 1 }, + { "px": [176,176], "src": [112,64], "f": 0, "t": 79, "d": [7,187], "a": 1 }, + { "px": [192,176], "src": [112,64], "f": 0, "t": 79, "d": [7,188], "a": 1 }, + { "px": [64,192], "src": [112,64], "f": 0, "t": 79, "d": [7,196], "a": 1 }, + { "px": [80,192], "src": [112,64], "f": 0, "t": 79, "d": [7,197], "a": 1 }, + { "px": [96,192], "src": [112,64], "f": 0, "t": 79, "d": [7,198], "a": 1 }, + { "px": [112,192], "src": [112,64], "f": 0, "t": 79, "d": [7,199], "a": 1 }, + { "px": [128,192], "src": [112,64], "f": 0, "t": 79, "d": [7,200], "a": 1 }, + { "px": [144,192], "src": [112,64], "f": 0, "t": 79, "d": [7,201], "a": 1 }, + { "px": [160,192], "src": [112,64], "f": 0, "t": 79, "d": [7,202], "a": 1 }, + { "px": [128,208], "src": [112,64], "f": 0, "t": 79, "d": [7,216], "a": 1 }, + { "px": [144,208], "src": [112,64], "f": 0, "t": 79, "d": [7,217], "a": 1 } + ], + "seed": 6016632, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [] + } + ], + "__neighbours": [] + } + ], + "worlds": [], + "dummyWorldIid": "34d44ef1-8990-11ee-965e-3f1f439075a6" +} diff --git a/assets/world.ldtk b/assets/world.ldtk index 7a662bf..3744af8 100644 --- a/assets/world.ldtk +++ b/assets/world.ldtk @@ -8,10 +8,10 @@ "appVersion": "1.4.1", "url": "https://ldtk.io" }, - "iid": "34d44ef0-8990-11ee-965e-61f7a83bc674", + "iid": "4b9683d0-8990-11ee-a35f-a3bea5cd5c8d", "jsonVersion": "1.4.1", "appBuildId": 471015, - "nextUid": 11, + "nextUid": 23, "identifierStyle": "Capitalize", "toc": [], "worldLayout": "Free", @@ -45,7 +45,7 @@ "__type": "Entities", "identifier": "Entities", "type": "Entities", - "uid": 10, + "uid": 20, "doc": null, "uiColor": null, "gridSize": 16, @@ -74,9 +74,9 @@ }, { "__type": "IntGrid", - "identifier": "Walls", + "identifier": "Dirt", "type": "IntGrid", - "uid": 1, + "uid": 4, "doc": null, "uiColor": null, "gridSize": 16, @@ -95,15 +95,263 @@ "parallaxScaling": true, "requiredTags": [], "excludedTags": [], - "intGridValues": [{ "value": 1, "identifier": "Wall", "color": "#000000", "tile": null, "groupUid": 0 }], + "intGridValues": [{ "value": 1, "identifier": "Dirt", "color": "#000000", "tile": null, "groupUid": 0 }], "intGridValuesGroups": [], "autoRuleGroups": [ - { "uid": 6, "name": "Walls", "color": null, "icon": null, "active": true, "isOptional": false, "rules": [ + { "uid": 7, "name": "Dirt", "color": null, "icon": null, "active": true, "isOptional": false, "rules": [ + { + "uid": 12, + "active": true, + "size": 3, + "tileIds": [73], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,-1,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 9462254, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 15, + "active": true, + "size": 3, + "tileIds": [99], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,-1,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 9214475, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, { - "uid": 7, + "uid": 13, + "active": true, + "size": 3, + "tileIds": [75], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 5040857, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 10, + "active": true, + "size": 3, + "tileIds": [97], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 9618339, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 14, + "active": true, + "size": 3, + "tileIds": [87], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,-1,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 7634353, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 16, + "active": true, + "size": 3, + "tileIds": [74], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,-1,0,0,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 7192474, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 11, + "active": true, + "size": 3, + "tileIds": [85], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,-1,1,0,0,0,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 4077211, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 9, + "active": true, + "size": 3, + "tileIds": [98], + "alpha": 1, + "chance": 1, + "breakOnMatch": true, + "pattern": [0,0,0,0,1,0,0,-1,0], + "flipX": false, + "flipY": false, + "xModulo": 1, + "yModulo": 1, + "xOffset": 0, + "yOffset": 0, + "tileXOffset": 0, + "tileYOffset": 0, + "tileRandomXMin": 0, + "tileRandomXMax": 0, + "tileRandomYMin": 0, + "tileRandomYMax": 0, + "checker": "None", + "tileMode": "Single", + "pivotX": 0, + "pivotY": 0, + "outOfBoundsValue": null, + "perlinActive": false, + "perlinSeed": 5053071, + "perlinScale": 0.2, + "perlinOctaves": 2 + }, + { + "uid": 8, "active": true, "size": 1, - "tileIds": [79], + "tileIds": [110], "alpha": 1, "chance": 1, "breakOnMatch": true, @@ -126,17 +374,17 @@ "pivotY": 0, "outOfBoundsValue": null, "perlinActive": false, - "perlinSeed": 5720882, + "perlinSeed": 8814328, "perlinScale": 0.2, "perlinOctaves": 2 } ], "usesWizard": false }, - { "uid": 4, "name": "Background", "color": null, "icon": null, "active": true, "isOptional": false, "rules": [ + { "uid": 5, "name": "Background", "color": null, "icon": null, "active": true, "isOptional": false, "rules": [ { - "uid": 5, + "uid": 6, "active": true, "size": 1, - "tileIds": [0], + "tileIds": [50], "alpha": 1, "chance": 1, "breakOnMatch": true, @@ -159,21 +407,21 @@ "pivotY": 0, "outOfBoundsValue": null, "perlinActive": false, - "perlinSeed": 4808950, + "perlinSeed": 1659813, "perlinScale": 0.2, "perlinOctaves": 2 } ], "usesWizard": false } ], "autoSourceLayerDefUid": null, - "tilesetDefUid": 2, + "tilesetDefUid": 1, "tilePivotX": 0, "tilePivotY": 0 } ], "entities": [ { - "identifier": "Player", - "uid": 8, + "identifier": "Queen", + "uid": 18, "tags": [], "exportToToc": false, "doc": null, @@ -195,8 +443,8 @@ "showName": true, "tilesetId": 2, "tileRenderMode": "FitInside", - "tileRect": { "tilesetUid": 2, "x": 256, "y": 128, "w": 16, "h": 16 }, - "uiTileRect": null, + "tileRect": { "tilesetUid": 2, "x": 96, "y": 0, "w": 32, "h": 32 }, + "uiTileRect": { "tilesetUid": 2, "x": 96, "y": 0, "w": 32, "h": 32 }, "nineSliceBorders": [], "maxCount": 0, "limitScope": "PerLevel", @@ -206,8 +454,8 @@ "fieldDefs": [] }, { - "identifier": "Goal", - "uid": 9, + "identifier": "EnemyQueen", + "uid": 19, "tags": [], "exportToToc": false, "doc": null, @@ -229,8 +477,8 @@ "showName": true, "tilesetId": 2, "tileRenderMode": "FitInside", - "tileRect": { "tilesetUid": 2, "x": 256, "y": 48, "w": 16, "h": 16 }, - "uiTileRect": null, + "tileRect": { "tilesetUid": 2, "x": 0, "y": 0, "w": 32, "h": 32 }, + "uiTileRect": { "tilesetUid": 2, "x": 0, "y": 0, "w": 32, "h": 32 }, "nineSliceBorders": [], "maxCount": 0, "limitScope": "PerLevel", @@ -240,11 +488,55 @@ "fieldDefs": [] } ], "tilesets": [ + { + "__cWid": 12, + "__cHei": 10, + "identifier": "Environment", + "uid": 1, + "relPath": "shmup.png", + "embedAtlas": null, + "pxWid": 192, + "pxHei": 160, + "tileGridSize": 16, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111", + "averageColors": "5fc68fc55fed6fec6fc78fc75fc63fb24dde2677889988895986998789868877d88999668966999a6889a99a999a8899ba88a89a758a3fffc786c8965776a99a899a7899999a899af8a4fdebfdd9fdebfcd6fcd6fdeefecbfda9fecbfd97fc96f9b4fdd9fbc3fdd9fcd6fcd6fa85fda9fc85fda9fd97fd97f8a4fdebfdd9fdebfeecfdeef884fecbfda9fecbfedcfeeefb84fcb5fcb5fcb5fda5fda5f889fda9fda9fda9fdbafdbafb84fcb5fda5fcb5fda5fdb5f889fda9fdcafda9fdbafdbaf995fcb5fcb5fcb5fcc4fcc4f888fda9fda9fda9fd97fd97f9a7fdc6fbc3fdb5fcc4fcc4f987fd96fc86fd96fd97fd97" + } + }, + { + "__cWid": 4, + "__cHei": 6, + "identifier": "Airplanes", + "uid": 2, + "relPath": "airplanes.png", + "embedAtlas": null, + "pxWid": 128, + "pxHei": 192, + "tileGridSize": 32, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "000000000000000000000000", + "averageColors": "769a7a7788977a97458a5a5547965a86548a496637854986788978898889788947895789477857895779477837784778" + } + }, { "__cWid": 18, "__cHei": 11, - "identifier": "Art", - "uid": 2, + "identifier": "Tinybattle", + "uid": 21, "relPath": "tinybattle.png", "embedAtlas": null, "pxWid": 288, @@ -266,7 +558,7 @@ "levels": [ { "identifier": "Level_0", - "iid": "34d47600-8990-11ee-965e-2732e65770a0", + "iid": "4b9683d2-8990-11ee-a35f-6769cb06cd81", "uid": 0, "worldX": 0, "worldY": 0, @@ -296,55 +588,55 @@ "__pxTotalOffsetY": 0, "__tilesetDefUid": null, "__tilesetRelPath": null, - "iid": "b7e8fac0-8990-11ee-965e-b13233fffc4b", + "iid": "9cdff700-8990-11ee-a35f-594038354978", "levelId": 0, - "layerDefUid": 10, + "layerDefUid": 20, "pxOffsetX": 0, "pxOffsetY": 0, "visible": true, "optionalRules": [], "intGridCsv": [], "autoLayerTiles": [], - "seed": 6226910, + "seed": 5391292, "overrideTilesetUid": null, "gridTiles": [], "entityInstances": [ { - "__identifier": "Player", - "__grid": [2,13], + "__identifier": "Queen", + "__grid": [1,14], "__pivot": [0,0], "__tags": [], - "__tile": { "tilesetUid": 2, "x": 256, "y": 128, "w": 16, "h": 16 }, + "__tile": { "tilesetUid": 2, "x": 96, "y": 0, "w": 32, "h": 32 }, "__smartColor": "#BE4A2F", - "__worldX": 32, - "__worldY": 208, - "iid": "be222650-8990-11ee-965e-7972d0a0edcd", + "__worldX": 16, + "__worldY": 224, + "iid": "a21e20c0-8990-11ee-a35f-09958ed359fc", "width": 16, "height": 16, - "defUid": 8, - "px": [32,208], + "defUid": 18, + "px": [16,224], "fieldInstances": [] }, { - "__identifier": "Goal", - "__grid": [12,2], + "__identifier": "EnemyQueen", + "__grid": [14,1], "__pivot": [0,0], "__tags": [], - "__tile": { "tilesetUid": 2, "x": 256, "y": 48, "w": 16, "h": 16 }, + "__tile": { "tilesetUid": 2, "x": 0, "y": 0, "w": 32, "h": 32 }, "__smartColor": "#D77643", - "__worldX": 192, - "__worldY": 32, - "iid": "bff9f390-8990-11ee-965e-4f4b23f059fb", + "__worldX": 224, + "__worldY": 16, + "iid": "a3d87af0-8990-11ee-a35f-1d27fb52c714", "width": 16, "height": 16, - "defUid": 9, - "px": [192,32], + "defUid": 19, + "px": [224,16], "fieldInstances": [] } ] }, { - "__identifier": "Walls", + "__identifier": "Dirt", "__type": "IntGrid", "__cWid": 16, "__cHei": 16, @@ -352,284 +644,284 @@ "__opacity": 1, "__pxTotalOffsetX": 0, "__pxTotalOffsetY": 0, - "__tilesetDefUid": 2, - "__tilesetRelPath": "tinybattle.png", - "iid": "5ab6cb70-8990-11ee-965e-7dd01c18e0cb", + "__tilesetDefUid": 1, + "__tilesetRelPath": "shmup.png", + "iid": "b265a320-8990-11ee-a35f-b31e6cafa877", "levelId": 0, - "layerDefUid": 1, + "layerDefUid": 4, "pxOffsetX": 0, "pxOffsetY": 0, "visible": true, "optionalRules": [], "intGridCsv": [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, - 0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, - 0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0, - 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, + 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1, + 0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0, + 0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0, + 0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0, + 0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 0,0,0,0,0,0,0,0,0,0,0 ], "autoLayerTiles": [ - { "px": [0,0], "src": [0,0], "f": 0, "t": 0, "d": [5,0], "a": 1 }, - { "px": [16,0], "src": [0,0], "f": 0, "t": 0, "d": [5,1], "a": 1 }, - { "px": [32,0], "src": [0,0], "f": 0, "t": 0, "d": [5,2], "a": 1 }, - { "px": [48,0], "src": [0,0], "f": 0, "t": 0, "d": [5,3], "a": 1 }, - { "px": [64,0], "src": [0,0], "f": 0, "t": 0, "d": [5,4], "a": 1 }, - { "px": [80,0], "src": [0,0], "f": 0, "t": 0, "d": [5,5], "a": 1 }, - { "px": [96,0], "src": [0,0], "f": 0, "t": 0, "d": [5,6], "a": 1 }, - { "px": [112,0], "src": [0,0], "f": 0, "t": 0, "d": [5,7], "a": 1 }, - { "px": [128,0], "src": [0,0], "f": 0, "t": 0, "d": [5,8], "a": 1 }, - { "px": [144,0], "src": [0,0], "f": 0, "t": 0, "d": [5,9], "a": 1 }, - { "px": [160,0], "src": [0,0], "f": 0, "t": 0, "d": [5,10], "a": 1 }, - { "px": [176,0], "src": [0,0], "f": 0, "t": 0, "d": [5,11], "a": 1 }, - { "px": [192,0], "src": [0,0], "f": 0, "t": 0, "d": [5,12], "a": 1 }, - { "px": [208,0], "src": [0,0], "f": 0, "t": 0, "d": [5,13], "a": 1 }, - { "px": [224,0], "src": [0,0], "f": 0, "t": 0, "d": [5,14], "a": 1 }, - { "px": [240,0], "src": [0,0], "f": 0, "t": 0, "d": [5,15], "a": 1 }, - { "px": [0,16], "src": [0,0], "f": 0, "t": 0, "d": [5,16], "a": 1 }, - { "px": [16,16], "src": [0,0], "f": 0, "t": 0, "d": [5,17], "a": 1 }, - { "px": [32,16], "src": [0,0], "f": 0, "t": 0, "d": [5,18], "a": 1 }, - { "px": [48,16], "src": [0,0], "f": 0, "t": 0, "d": [5,19], "a": 1 }, - { "px": [64,16], "src": [0,0], "f": 0, "t": 0, "d": [5,20], "a": 1 }, - { "px": [80,16], "src": [0,0], "f": 0, "t": 0, "d": [5,21], "a": 1 }, - { "px": [96,16], "src": [0,0], "f": 0, "t": 0, "d": [5,22], "a": 1 }, - { "px": [112,16], "src": [0,0], "f": 0, "t": 0, "d": [5,23], "a": 1 }, - { "px": [128,16], "src": [0,0], "f": 0, "t": 0, "d": [5,24], "a": 1 }, - { "px": [144,16], "src": [0,0], "f": 0, "t": 0, "d": [5,25], "a": 1 }, - { "px": [160,16], "src": [0,0], "f": 0, "t": 0, "d": [5,26], "a": 1 }, - { "px": [176,16], "src": [0,0], "f": 0, "t": 0, "d": [5,27], "a": 1 }, - { "px": [192,16], "src": [0,0], "f": 0, "t": 0, "d": [5,28], "a": 1 }, - { "px": [208,16], "src": [0,0], "f": 0, "t": 0, "d": [5,29], "a": 1 }, - { "px": [224,16], "src": [0,0], "f": 0, "t": 0, "d": [5,30], "a": 1 }, - { "px": [240,16], "src": [0,0], "f": 0, "t": 0, "d": [5,31], "a": 1 }, - { "px": [0,32], "src": [0,0], "f": 0, "t": 0, "d": [5,32], "a": 1 }, - { "px": [16,32], "src": [0,0], "f": 0, "t": 0, "d": [5,33], "a": 1 }, - { "px": [32,32], "src": [0,0], "f": 0, "t": 0, "d": [5,34], "a": 1 }, - { "px": [48,32], "src": [0,0], "f": 0, "t": 0, "d": [5,35], "a": 1 }, - { "px": [64,32], "src": [0,0], "f": 0, "t": 0, "d": [5,36], "a": 1 }, - { "px": [80,32], "src": [0,0], "f": 0, "t": 0, "d": [5,37], "a": 1 }, - { "px": [96,32], "src": [0,0], "f": 0, "t": 0, "d": [5,38], "a": 1 }, - { "px": [112,32], "src": [0,0], "f": 0, "t": 0, "d": [5,39], "a": 1 }, - { "px": [128,32], "src": [0,0], "f": 0, "t": 0, "d": [5,40], "a": 1 }, - { "px": [144,32], "src": [0,0], "f": 0, "t": 0, "d": [5,41], "a": 1 }, - { "px": [160,32], "src": [0,0], "f": 0, "t": 0, "d": [5,42], "a": 1 }, - { "px": [176,32], "src": [0,0], "f": 0, "t": 0, "d": [5,43], "a": 1 }, - { "px": [192,32], "src": [0,0], "f": 0, "t": 0, "d": [5,44], "a": 1 }, - { "px": [208,32], "src": [0,0], "f": 0, "t": 0, "d": [5,45], "a": 1 }, - { "px": [224,32], "src": [0,0], "f": 0, "t": 0, "d": [5,46], "a": 1 }, - { "px": [240,32], "src": [0,0], "f": 0, "t": 0, "d": [5,47], "a": 1 }, - { "px": [0,48], "src": [0,0], "f": 0, "t": 0, "d": [5,48], "a": 1 }, - { "px": [16,48], "src": [0,0], "f": 0, "t": 0, "d": [5,49], "a": 1 }, - { "px": [32,48], "src": [0,0], "f": 0, "t": 0, "d": [5,50], "a": 1 }, - { "px": [64,48], "src": [0,0], "f": 0, "t": 0, "d": [5,52], "a": 1 }, - { "px": [80,48], "src": [0,0], "f": 0, "t": 0, "d": [5,53], "a": 1 }, - { "px": [96,48], "src": [0,0], "f": 0, "t": 0, "d": [5,54], "a": 1 }, - { "px": [112,48], "src": [0,0], "f": 0, "t": 0, "d": [5,55], "a": 1 }, - { "px": [128,48], "src": [0,0], "f": 0, "t": 0, "d": [5,56], "a": 1 }, - { "px": [144,48], "src": [0,0], "f": 0, "t": 0, "d": [5,57], "a": 1 }, - { "px": [176,48], "src": [0,0], "f": 0, "t": 0, "d": [5,59], "a": 1 }, - { "px": [192,48], "src": [0,0], "f": 0, "t": 0, "d": [5,60], "a": 1 }, - { "px": [208,48], "src": [0,0], "f": 0, "t": 0, "d": [5,61], "a": 1 }, - { "px": [224,48], "src": [0,0], "f": 0, "t": 0, "d": [5,62], "a": 1 }, - { "px": [240,48], "src": [0,0], "f": 0, "t": 0, "d": [5,63], "a": 1 }, - { "px": [0,64], "src": [0,0], "f": 0, "t": 0, "d": [5,64], "a": 1 }, - { "px": [16,64], "src": [0,0], "f": 0, "t": 0, "d": [5,65], "a": 1 }, - { "px": [32,64], "src": [0,0], "f": 0, "t": 0, "d": [5,66], "a": 1 }, - { "px": [64,64], "src": [0,0], "f": 0, "t": 0, "d": [5,68], "a": 1 }, - { "px": [80,64], "src": [0,0], "f": 0, "t": 0, "d": [5,69], "a": 1 }, - { "px": [96,64], "src": [0,0], "f": 0, "t": 0, "d": [5,70], "a": 1 }, - { "px": [112,64], "src": [0,0], "f": 0, "t": 0, "d": [5,71], "a": 1 }, - { "px": [128,64], "src": [0,0], "f": 0, "t": 0, "d": [5,72], "a": 1 }, - { "px": [144,64], "src": [0,0], "f": 0, "t": 0, "d": [5,73], "a": 1 }, - { "px": [176,64], "src": [0,0], "f": 0, "t": 0, "d": [5,75], "a": 1 }, - { "px": [192,64], "src": [0,0], "f": 0, "t": 0, "d": [5,76], "a": 1 }, - { "px": [208,64], "src": [0,0], "f": 0, "t": 0, "d": [5,77], "a": 1 }, - { "px": [224,64], "src": [0,0], "f": 0, "t": 0, "d": [5,78], "a": 1 }, - { "px": [240,64], "src": [0,0], "f": 0, "t": 0, "d": [5,79], "a": 1 }, - { "px": [0,80], "src": [0,0], "f": 0, "t": 0, "d": [5,80], "a": 1 }, - { "px": [16,80], "src": [0,0], "f": 0, "t": 0, "d": [5,81], "a": 1 }, - { "px": [32,80], "src": [0,0], "f": 0, "t": 0, "d": [5,82], "a": 1 }, - { "px": [64,80], "src": [0,0], "f": 0, "t": 0, "d": [5,84], "a": 1 }, - { "px": [80,80], "src": [0,0], "f": 0, "t": 0, "d": [5,85], "a": 1 }, - { "px": [96,80], "src": [0,0], "f": 0, "t": 0, "d": [5,86], "a": 1 }, - { "px": [112,80], "src": [0,0], "f": 0, "t": 0, "d": [5,87], "a": 1 }, - { "px": [128,80], "src": [0,0], "f": 0, "t": 0, "d": [5,88], "a": 1 }, - { "px": [144,80], "src": [0,0], "f": 0, "t": 0, "d": [5,89], "a": 1 }, - { "px": [176,80], "src": [0,0], "f": 0, "t": 0, "d": [5,91], "a": 1 }, - { "px": [192,80], "src": [0,0], "f": 0, "t": 0, "d": [5,92], "a": 1 }, - { "px": [208,80], "src": [0,0], "f": 0, "t": 0, "d": [5,93], "a": 1 }, - { "px": [224,80], "src": [0,0], "f": 0, "t": 0, "d": [5,94], "a": 1 }, - { "px": [240,80], "src": [0,0], "f": 0, "t": 0, "d": [5,95], "a": 1 }, - { "px": [0,96], "src": [0,0], "f": 0, "t": 0, "d": [5,96], "a": 1 }, - { "px": [16,96], "src": [0,0], "f": 0, "t": 0, "d": [5,97], "a": 1 }, - { "px": [32,96], "src": [0,0], "f": 0, "t": 0, "d": [5,98], "a": 1 }, - { "px": [48,96], "src": [0,0], "f": 0, "t": 0, "d": [5,99], "a": 1 }, - { "px": [64,96], "src": [0,0], "f": 0, "t": 0, "d": [5,100], "a": 1 }, - { "px": [80,96], "src": [0,0], "f": 0, "t": 0, "d": [5,101], "a": 1 }, - { "px": [96,96], "src": [0,0], "f": 0, "t": 0, "d": [5,102], "a": 1 }, - { "px": [112,96], "src": [0,0], "f": 0, "t": 0, "d": [5,103], "a": 1 }, - { "px": [128,96], "src": [0,0], "f": 0, "t": 0, "d": [5,104], "a": 1 }, - { "px": [144,96], "src": [0,0], "f": 0, "t": 0, "d": [5,105], "a": 1 }, - { "px": [160,96], "src": [0,0], "f": 0, "t": 0, "d": [5,106], "a": 1 }, - { "px": [176,96], "src": [0,0], "f": 0, "t": 0, "d": [5,107], "a": 1 }, - { "px": [192,96], "src": [0,0], "f": 0, "t": 0, "d": [5,108], "a": 1 }, - { "px": [208,96], "src": [0,0], "f": 0, "t": 0, "d": [5,109], "a": 1 }, - { "px": [224,96], "src": [0,0], "f": 0, "t": 0, "d": [5,110], "a": 1 }, - { "px": [240,96], "src": [0,0], "f": 0, "t": 0, "d": [5,111], "a": 1 }, - { "px": [0,112], "src": [0,0], "f": 0, "t": 0, "d": [5,112], "a": 1 }, - { "px": [16,112], "src": [0,0], "f": 0, "t": 0, "d": [5,113], "a": 1 }, - { "px": [32,112], "src": [0,0], "f": 0, "t": 0, "d": [5,114], "a": 1 }, - { "px": [48,112], "src": [0,0], "f": 0, "t": 0, "d": [5,115], "a": 1 }, - { "px": [64,112], "src": [0,0], "f": 0, "t": 0, "d": [5,116], "a": 1 }, - { "px": [80,112], "src": [0,0], "f": 0, "t": 0, "d": [5,117], "a": 1 }, - { "px": [96,112], "src": [0,0], "f": 0, "t": 0, "d": [5,118], "a": 1 }, - { "px": [112,112], "src": [0,0], "f": 0, "t": 0, "d": [5,119], "a": 1 }, - { "px": [128,112], "src": [0,0], "f": 0, "t": 0, "d": [5,120], "a": 1 }, - { "px": [144,112], "src": [0,0], "f": 0, "t": 0, "d": [5,121], "a": 1 }, - { "px": [160,112], "src": [0,0], "f": 0, "t": 0, "d": [5,122], "a": 1 }, - { "px": [176,112], "src": [0,0], "f": 0, "t": 0, "d": [5,123], "a": 1 }, - { "px": [192,112], "src": [0,0], "f": 0, "t": 0, "d": [5,124], "a": 1 }, - { "px": [208,112], "src": [0,0], "f": 0, "t": 0, "d": [5,125], "a": 1 }, - { "px": [224,112], "src": [0,0], "f": 0, "t": 0, "d": [5,126], "a": 1 }, - { "px": [240,112], "src": [0,0], "f": 0, "t": 0, "d": [5,127], "a": 1 }, - { "px": [0,128], "src": [0,0], "f": 0, "t": 0, "d": [5,128], "a": 1 }, - { "px": [16,128], "src": [0,0], "f": 0, "t": 0, "d": [5,129], "a": 1 }, - { "px": [48,128], "src": [0,0], "f": 0, "t": 0, "d": [5,131], "a": 1 }, - { "px": [64,128], "src": [0,0], "f": 0, "t": 0, "d": [5,132], "a": 1 }, - { "px": [80,128], "src": [0,0], "f": 0, "t": 0, "d": [5,133], "a": 1 }, - { "px": [96,128], "src": [0,0], "f": 0, "t": 0, "d": [5,134], "a": 1 }, - { "px": [112,128], "src": [0,0], "f": 0, "t": 0, "d": [5,135], "a": 1 }, - { "px": [128,128], "src": [0,0], "f": 0, "t": 0, "d": [5,136], "a": 1 }, - { "px": [144,128], "src": [0,0], "f": 0, "t": 0, "d": [5,137], "a": 1 }, - { "px": [160,128], "src": [0,0], "f": 0, "t": 0, "d": [5,138], "a": 1 }, - { "px": [176,128], "src": [0,0], "f": 0, "t": 0, "d": [5,139], "a": 1 }, - { "px": [192,128], "src": [0,0], "f": 0, "t": 0, "d": [5,140], "a": 1 }, - { "px": [208,128], "src": [0,0], "f": 0, "t": 0, "d": [5,141], "a": 1 }, - { "px": [224,128], "src": [0,0], "f": 0, "t": 0, "d": [5,142], "a": 1 }, - { "px": [240,128], "src": [0,0], "f": 0, "t": 0, "d": [5,143], "a": 1 }, - { "px": [0,144], "src": [0,0], "f": 0, "t": 0, "d": [5,144], "a": 1 }, - { "px": [16,144], "src": [0,0], "f": 0, "t": 0, "d": [5,145], "a": 1 }, - { "px": [64,144], "src": [0,0], "f": 0, "t": 0, "d": [5,148], "a": 1 }, - { "px": [80,144], "src": [0,0], "f": 0, "t": 0, "d": [5,149], "a": 1 }, - { "px": [96,144], "src": [0,0], "f": 0, "t": 0, "d": [5,150], "a": 1 }, - { "px": [112,144], "src": [0,0], "f": 0, "t": 0, "d": [5,151], "a": 1 }, - { "px": [128,144], "src": [0,0], "f": 0, "t": 0, "d": [5,152], "a": 1 }, - { "px": [144,144], "src": [0,0], "f": 0, "t": 0, "d": [5,153], "a": 1 }, - { "px": [160,144], "src": [0,0], "f": 0, "t": 0, "d": [5,154], "a": 1 }, - { "px": [176,144], "src": [0,0], "f": 0, "t": 0, "d": [5,155], "a": 1 }, - { "px": [224,144], "src": [0,0], "f": 0, "t": 0, "d": [5,158], "a": 1 }, - { "px": [240,144], "src": [0,0], "f": 0, "t": 0, "d": [5,159], "a": 1 }, - { "px": [0,160], "src": [0,0], "f": 0, "t": 0, "d": [5,160], "a": 1 }, - { "px": [16,160], "src": [0,0], "f": 0, "t": 0, "d": [5,161], "a": 1 }, - { "px": [32,160], "src": [0,0], "f": 0, "t": 0, "d": [5,162], "a": 1 }, - { "px": [64,160], "src": [0,0], "f": 0, "t": 0, "d": [5,164], "a": 1 }, - { "px": [80,160], "src": [0,0], "f": 0, "t": 0, "d": [5,165], "a": 1 }, - { "px": [96,160], "src": [0,0], "f": 0, "t": 0, "d": [5,166], "a": 1 }, - { "px": [112,160], "src": [0,0], "f": 0, "t": 0, "d": [5,167], "a": 1 }, - { "px": [128,160], "src": [0,0], "f": 0, "t": 0, "d": [5,168], "a": 1 }, - { "px": [144,160], "src": [0,0], "f": 0, "t": 0, "d": [5,169], "a": 1 }, - { "px": [160,160], "src": [0,0], "f": 0, "t": 0, "d": [5,170], "a": 1 }, - { "px": [176,160], "src": [0,0], "f": 0, "t": 0, "d": [5,171], "a": 1 }, - { "px": [208,160], "src": [0,0], "f": 0, "t": 0, "d": [5,173], "a": 1 }, - { "px": [224,160], "src": [0,0], "f": 0, "t": 0, "d": [5,174], "a": 1 }, - { "px": [240,160], "src": [0,0], "f": 0, "t": 0, "d": [5,175], "a": 1 }, - { "px": [0,176], "src": [0,0], "f": 0, "t": 0, "d": [5,176], "a": 1 }, - { "px": [16,176], "src": [0,0], "f": 0, "t": 0, "d": [5,177], "a": 1 }, - { "px": [32,176], "src": [0,0], "f": 0, "t": 0, "d": [5,178], "a": 1 }, - { "px": [80,176], "src": [0,0], "f": 0, "t": 0, "d": [5,181], "a": 1 }, - { "px": [96,176], "src": [0,0], "f": 0, "t": 0, "d": [5,182], "a": 1 }, - { "px": [112,176], "src": [0,0], "f": 0, "t": 0, "d": [5,183], "a": 1 }, - { "px": [128,176], "src": [0,0], "f": 0, "t": 0, "d": [5,184], "a": 1 }, - { "px": [144,176], "src": [0,0], "f": 0, "t": 0, "d": [5,185], "a": 1 }, - { "px": [160,176], "src": [0,0], "f": 0, "t": 0, "d": [5,186], "a": 1 }, - { "px": [208,176], "src": [0,0], "f": 0, "t": 0, "d": [5,189], "a": 1 }, - { "px": [224,176], "src": [0,0], "f": 0, "t": 0, "d": [5,190], "a": 1 }, - { "px": [240,176], "src": [0,0], "f": 0, "t": 0, "d": [5,191], "a": 1 }, - { "px": [0,192], "src": [0,0], "f": 0, "t": 0, "d": [5,192], "a": 1 }, - { "px": [16,192], "src": [0,0], "f": 0, "t": 0, "d": [5,193], "a": 1 }, - { "px": [32,192], "src": [0,0], "f": 0, "t": 0, "d": [5,194], "a": 1 }, - { "px": [48,192], "src": [0,0], "f": 0, "t": 0, "d": [5,195], "a": 1 }, - { "px": [176,192], "src": [0,0], "f": 0, "t": 0, "d": [5,203], "a": 1 }, - { "px": [192,192], "src": [0,0], "f": 0, "t": 0, "d": [5,204], "a": 1 }, - { "px": [208,192], "src": [0,0], "f": 0, "t": 0, "d": [5,205], "a": 1 }, - { "px": [224,192], "src": [0,0], "f": 0, "t": 0, "d": [5,206], "a": 1 }, - { "px": [240,192], "src": [0,0], "f": 0, "t": 0, "d": [5,207], "a": 1 }, - { "px": [0,208], "src": [0,0], "f": 0, "t": 0, "d": [5,208], "a": 1 }, - { "px": [16,208], "src": [0,0], "f": 0, "t": 0, "d": [5,209], "a": 1 }, - { "px": [32,208], "src": [0,0], "f": 0, "t": 0, "d": [5,210], "a": 1 }, - { "px": [48,208], "src": [0,0], "f": 0, "t": 0, "d": [5,211], "a": 1 }, - { "px": [64,208], "src": [0,0], "f": 0, "t": 0, "d": [5,212], "a": 1 }, - { "px": [80,208], "src": [0,0], "f": 0, "t": 0, "d": [5,213], "a": 1 }, - { "px": [96,208], "src": [0,0], "f": 0, "t": 0, "d": [5,214], "a": 1 }, - { "px": [112,208], "src": [0,0], "f": 0, "t": 0, "d": [5,215], "a": 1 }, - { "px": [160,208], "src": [0,0], "f": 0, "t": 0, "d": [5,218], "a": 1 }, - { "px": [176,208], "src": [0,0], "f": 0, "t": 0, "d": [5,219], "a": 1 }, - { "px": [192,208], "src": [0,0], "f": 0, "t": 0, "d": [5,220], "a": 1 }, - { "px": [208,208], "src": [0,0], "f": 0, "t": 0, "d": [5,221], "a": 1 }, - { "px": [224,208], "src": [0,0], "f": 0, "t": 0, "d": [5,222], "a": 1 }, - { "px": [240,208], "src": [0,0], "f": 0, "t": 0, "d": [5,223], "a": 1 }, - { "px": [0,224], "src": [0,0], "f": 0, "t": 0, "d": [5,224], "a": 1 }, - { "px": [16,224], "src": [0,0], "f": 0, "t": 0, "d": [5,225], "a": 1 }, - { "px": [32,224], "src": [0,0], "f": 0, "t": 0, "d": [5,226], "a": 1 }, - { "px": [48,224], "src": [0,0], "f": 0, "t": 0, "d": [5,227], "a": 1 }, - { "px": [64,224], "src": [0,0], "f": 0, "t": 0, "d": [5,228], "a": 1 }, - { "px": [80,224], "src": [0,0], "f": 0, "t": 0, "d": [5,229], "a": 1 }, - { "px": [96,224], "src": [0,0], "f": 0, "t": 0, "d": [5,230], "a": 1 }, - { "px": [112,224], "src": [0,0], "f": 0, "t": 0, "d": [5,231], "a": 1 }, - { "px": [128,224], "src": [0,0], "f": 0, "t": 0, "d": [5,232], "a": 1 }, - { "px": [144,224], "src": [0,0], "f": 0, "t": 0, "d": [5,233], "a": 1 }, - { "px": [160,224], "src": [0,0], "f": 0, "t": 0, "d": [5,234], "a": 1 }, - { "px": [176,224], "src": [0,0], "f": 0, "t": 0, "d": [5,235], "a": 1 }, - { "px": [192,224], "src": [0,0], "f": 0, "t": 0, "d": [5,236], "a": 1 }, - { "px": [208,224], "src": [0,0], "f": 0, "t": 0, "d": [5,237], "a": 1 }, - { "px": [224,224], "src": [0,0], "f": 0, "t": 0, "d": [5,238], "a": 1 }, - { "px": [240,224], "src": [0,0], "f": 0, "t": 0, "d": [5,239], "a": 1 }, - { "px": [0,240], "src": [0,0], "f": 0, "t": 0, "d": [5,240], "a": 1 }, - { "px": [16,240], "src": [0,0], "f": 0, "t": 0, "d": [5,241], "a": 1 }, - { "px": [32,240], "src": [0,0], "f": 0, "t": 0, "d": [5,242], "a": 1 }, - { "px": [48,240], "src": [0,0], "f": 0, "t": 0, "d": [5,243], "a": 1 }, - { "px": [64,240], "src": [0,0], "f": 0, "t": 0, "d": [5,244], "a": 1 }, - { "px": [80,240], "src": [0,0], "f": 0, "t": 0, "d": [5,245], "a": 1 }, - { "px": [96,240], "src": [0,0], "f": 0, "t": 0, "d": [5,246], "a": 1 }, - { "px": [112,240], "src": [0,0], "f": 0, "t": 0, "d": [5,247], "a": 1 }, - { "px": [128,240], "src": [0,0], "f": 0, "t": 0, "d": [5,248], "a": 1 }, - { "px": [144,240], "src": [0,0], "f": 0, "t": 0, "d": [5,249], "a": 1 }, - { "px": [160,240], "src": [0,0], "f": 0, "t": 0, "d": [5,250], "a": 1 }, - { "px": [176,240], "src": [0,0], "f": 0, "t": 0, "d": [5,251], "a": 1 }, - { "px": [192,240], "src": [0,0], "f": 0, "t": 0, "d": [5,252], "a": 1 }, - { "px": [208,240], "src": [0,0], "f": 0, "t": 0, "d": [5,253], "a": 1 }, - { "px": [224,240], "src": [0,0], "f": 0, "t": 0, "d": [5,254], "a": 1 }, - { "px": [240,240], "src": [0,0], "f": 0, "t": 0, "d": [5,255], "a": 1 }, - { "px": [48,48], "src": [112,64], "f": 0, "t": 79, "d": [7,51], "a": 1 }, - { "px": [160,48], "src": [112,64], "f": 0, "t": 79, "d": [7,58], "a": 1 }, - { "px": [48,64], "src": [112,64], "f": 0, "t": 79, "d": [7,67], "a": 1 }, - { "px": [160,64], "src": [112,64], "f": 0, "t": 79, "d": [7,74], "a": 1 }, - { "px": [48,80], "src": [112,64], "f": 0, "t": 79, "d": [7,83], "a": 1 }, - { "px": [160,80], "src": [112,64], "f": 0, "t": 79, "d": [7,90], "a": 1 }, - { "px": [32,128], "src": [112,64], "f": 0, "t": 79, "d": [7,130], "a": 1 }, - { "px": [32,144], "src": [112,64], "f": 0, "t": 79, "d": [7,146], "a": 1 }, - { "px": [48,144], "src": [112,64], "f": 0, "t": 79, "d": [7,147], "a": 1 }, - { "px": [192,144], "src": [112,64], "f": 0, "t": 79, "d": [7,156], "a": 1 }, - { "px": [208,144], "src": [112,64], "f": 0, "t": 79, "d": [7,157], "a": 1 }, - { "px": [48,160], "src": [112,64], "f": 0, "t": 79, "d": [7,163], "a": 1 }, - { "px": [192,160], "src": [112,64], "f": 0, "t": 79, "d": [7,172], "a": 1 }, - { "px": [48,176], "src": [112,64], "f": 0, "t": 79, "d": [7,179], "a": 1 }, - { "px": [64,176], "src": [112,64], "f": 0, "t": 79, "d": [7,180], "a": 1 }, - { "px": [176,176], "src": [112,64], "f": 0, "t": 79, "d": [7,187], "a": 1 }, - { "px": [192,176], "src": [112,64], "f": 0, "t": 79, "d": [7,188], "a": 1 }, - { "px": [64,192], "src": [112,64], "f": 0, "t": 79, "d": [7,196], "a": 1 }, - { "px": [80,192], "src": [112,64], "f": 0, "t": 79, "d": [7,197], "a": 1 }, - { "px": [96,192], "src": [112,64], "f": 0, "t": 79, "d": [7,198], "a": 1 }, - { "px": [112,192], "src": [112,64], "f": 0, "t": 79, "d": [7,199], "a": 1 }, - { "px": [128,192], "src": [112,64], "f": 0, "t": 79, "d": [7,200], "a": 1 }, - { "px": [144,192], "src": [112,64], "f": 0, "t": 79, "d": [7,201], "a": 1 }, - { "px": [160,192], "src": [112,64], "f": 0, "t": 79, "d": [7,202], "a": 1 }, - { "px": [128,208], "src": [112,64], "f": 0, "t": 79, "d": [7,216], "a": 1 }, - { "px": [144,208], "src": [112,64], "f": 0, "t": 79, "d": [7,217], "a": 1 } + { "px": [0,0], "src": [32,64], "f": 0, "t": 50, "d": [6,0], "a": 1 }, + { "px": [16,0], "src": [32,64], "f": 0, "t": 50, "d": [6,1], "a": 1 }, + { "px": [32,0], "src": [32,64], "f": 0, "t": 50, "d": [6,2], "a": 1 }, + { "px": [48,0], "src": [32,64], "f": 0, "t": 50, "d": [6,3], "a": 1 }, + { "px": [64,0], "src": [32,64], "f": 0, "t": 50, "d": [6,4], "a": 1 }, + { "px": [80,0], "src": [32,64], "f": 0, "t": 50, "d": [6,5], "a": 1 }, + { "px": [96,0], "src": [32,64], "f": 0, "t": 50, "d": [6,6], "a": 1 }, + { "px": [112,0], "src": [32,64], "f": 0, "t": 50, "d": [6,7], "a": 1 }, + { "px": [128,0], "src": [32,64], "f": 0, "t": 50, "d": [6,8], "a": 1 }, + { "px": [144,0], "src": [32,64], "f": 0, "t": 50, "d": [6,9], "a": 1 }, + { "px": [160,0], "src": [32,64], "f": 0, "t": 50, "d": [6,10], "a": 1 }, + { "px": [192,0], "src": [32,64], "f": 0, "t": 50, "d": [6,12], "a": 1 }, + { "px": [208,0], "src": [32,64], "f": 0, "t": 50, "d": [6,13], "a": 1 }, + { "px": [224,0], "src": [32,64], "f": 0, "t": 50, "d": [6,14], "a": 1 }, + { "px": [240,0], "src": [32,64], "f": 0, "t": 50, "d": [6,15], "a": 1 }, + { "px": [0,16], "src": [32,64], "f": 0, "t": 50, "d": [6,16], "a": 1 }, + { "px": [16,16], "src": [32,64], "f": 0, "t": 50, "d": [6,17], "a": 1 }, + { "px": [32,16], "src": [32,64], "f": 0, "t": 50, "d": [6,18], "a": 1 }, + { "px": [48,16], "src": [32,64], "f": 0, "t": 50, "d": [6,19], "a": 1 }, + { "px": [64,16], "src": [32,64], "f": 0, "t": 50, "d": [6,20], "a": 1 }, + { "px": [80,16], "src": [32,64], "f": 0, "t": 50, "d": [6,21], "a": 1 }, + { "px": [96,16], "src": [32,64], "f": 0, "t": 50, "d": [6,22], "a": 1 }, + { "px": [112,16], "src": [32,64], "f": 0, "t": 50, "d": [6,23], "a": 1 }, + { "px": [128,16], "src": [32,64], "f": 0, "t": 50, "d": [6,24], "a": 1 }, + { "px": [144,16], "src": [32,64], "f": 0, "t": 50, "d": [6,25], "a": 1 }, + { "px": [160,16], "src": [32,64], "f": 0, "t": 50, "d": [6,26], "a": 1 }, + { "px": [192,16], "src": [32,64], "f": 0, "t": 50, "d": [6,28], "a": 1 }, + { "px": [208,16], "src": [32,64], "f": 0, "t": 50, "d": [6,29], "a": 1 }, + { "px": [224,16], "src": [32,64], "f": 0, "t": 50, "d": [6,30], "a": 1 }, + { "px": [240,16], "src": [32,64], "f": 0, "t": 50, "d": [6,31], "a": 1 }, + { "px": [0,32], "src": [32,64], "f": 0, "t": 50, "d": [6,32], "a": 1 }, + { "px": [16,32], "src": [32,64], "f": 0, "t": 50, "d": [6,33], "a": 1 }, + { "px": [32,32], "src": [32,64], "f": 0, "t": 50, "d": [6,34], "a": 1 }, + { "px": [48,32], "src": [32,64], "f": 0, "t": 50, "d": [6,35], "a": 1 }, + { "px": [64,32], "src": [32,64], "f": 0, "t": 50, "d": [6,36], "a": 1 }, + { "px": [80,32], "src": [32,64], "f": 0, "t": 50, "d": [6,37], "a": 1 }, + { "px": [96,32], "src": [32,64], "f": 0, "t": 50, "d": [6,38], "a": 1 }, + { "px": [192,32], "src": [32,64], "f": 0, "t": 50, "d": [6,44], "a": 1 }, + { "px": [208,32], "src": [32,64], "f": 0, "t": 50, "d": [6,45], "a": 1 }, + { "px": [224,32], "src": [32,64], "f": 0, "t": 50, "d": [6,46], "a": 1 }, + { "px": [240,32], "src": [32,64], "f": 0, "t": 50, "d": [6,47], "a": 1 }, + { "px": [0,48], "src": [32,64], "f": 0, "t": 50, "d": [6,48], "a": 1 }, + { "px": [16,48], "src": [32,64], "f": 0, "t": 50, "d": [6,49], "a": 1 }, + { "px": [32,48], "src": [32,64], "f": 0, "t": 50, "d": [6,50], "a": 1 }, + { "px": [48,48], "src": [32,64], "f": 0, "t": 50, "d": [6,51], "a": 1 }, + { "px": [64,48], "src": [32,64], "f": 0, "t": 50, "d": [6,52], "a": 1 }, + { "px": [128,48], "src": [32,64], "f": 0, "t": 50, "d": [6,56], "a": 1 }, + { "px": [144,48], "src": [32,64], "f": 0, "t": 50, "d": [6,57], "a": 1 }, + { "px": [160,48], "src": [32,64], "f": 0, "t": 50, "d": [6,58], "a": 1 }, + { "px": [192,48], "src": [32,64], "f": 0, "t": 50, "d": [6,60], "a": 1 }, + { "px": [208,48], "src": [32,64], "f": 0, "t": 50, "d": [6,61], "a": 1 }, + { "px": [224,48], "src": [32,64], "f": 0, "t": 50, "d": [6,62], "a": 1 }, + { "px": [240,48], "src": [32,64], "f": 0, "t": 50, "d": [6,63], "a": 1 }, + { "px": [0,64], "src": [32,64], "f": 0, "t": 50, "d": [6,64], "a": 1 }, + { "px": [16,64], "src": [32,64], "f": 0, "t": 50, "d": [6,65], "a": 1 }, + { "px": [32,64], "src": [32,64], "f": 0, "t": 50, "d": [6,66], "a": 1 }, + { "px": [48,64], "src": [32,64], "f": 0, "t": 50, "d": [6,67], "a": 1 }, + { "px": [96,64], "src": [32,64], "f": 0, "t": 50, "d": [6,70], "a": 1 }, + { "px": [112,64], "src": [32,64], "f": 0, "t": 50, "d": [6,71], "a": 1 }, + { "px": [128,64], "src": [32,64], "f": 0, "t": 50, "d": [6,72], "a": 1 }, + { "px": [144,64], "src": [32,64], "f": 0, "t": 50, "d": [6,73], "a": 1 }, + { "px": [160,64], "src": [32,64], "f": 0, "t": 50, "d": [6,74], "a": 1 }, + { "px": [0,80], "src": [32,64], "f": 0, "t": 50, "d": [6,80], "a": 1 }, + { "px": [16,80], "src": [32,64], "f": 0, "t": 50, "d": [6,81], "a": 1 }, + { "px": [32,80], "src": [32,64], "f": 0, "t": 50, "d": [6,82], "a": 1 }, + { "px": [80,80], "src": [32,64], "f": 0, "t": 50, "d": [6,85], "a": 1 }, + { "px": [96,80], "src": [32,64], "f": 0, "t": 50, "d": [6,86], "a": 1 }, + { "px": [112,80], "src": [32,64], "f": 0, "t": 50, "d": [6,87], "a": 1 }, + { "px": [128,80], "src": [32,64], "f": 0, "t": 50, "d": [6,88], "a": 1 }, + { "px": [144,80], "src": [32,64], "f": 0, "t": 50, "d": [6,89], "a": 1 }, + { "px": [160,80], "src": [32,64], "f": 0, "t": 50, "d": [6,90], "a": 1 }, + { "px": [176,80], "src": [32,64], "f": 0, "t": 50, "d": [6,91], "a": 1 }, + { "px": [192,80], "src": [32,64], "f": 0, "t": 50, "d": [6,92], "a": 1 }, + { "px": [224,80], "src": [32,64], "f": 0, "t": 50, "d": [6,94], "a": 1 }, + { "px": [240,80], "src": [32,64], "f": 0, "t": 50, "d": [6,95], "a": 1 }, + { "px": [0,96], "src": [32,64], "f": 0, "t": 50, "d": [6,96], "a": 1 }, + { "px": [16,96], "src": [32,64], "f": 0, "t": 50, "d": [6,97], "a": 1 }, + { "px": [32,96], "src": [32,64], "f": 0, "t": 50, "d": [6,98], "a": 1 }, + { "px": [64,96], "src": [32,64], "f": 0, "t": 50, "d": [6,100], "a": 1 }, + { "px": [80,96], "src": [32,64], "f": 0, "t": 50, "d": [6,101], "a": 1 }, + { "px": [96,96], "src": [32,64], "f": 0, "t": 50, "d": [6,102], "a": 1 }, + { "px": [112,96], "src": [32,64], "f": 0, "t": 50, "d": [6,103], "a": 1 }, + { "px": [128,96], "src": [32,64], "f": 0, "t": 50, "d": [6,104], "a": 1 }, + { "px": [144,96], "src": [32,64], "f": 0, "t": 50, "d": [6,105], "a": 1 }, + { "px": [160,96], "src": [32,64], "f": 0, "t": 50, "d": [6,106], "a": 1 }, + { "px": [176,96], "src": [32,64], "f": 0, "t": 50, "d": [6,107], "a": 1 }, + { "px": [192,96], "src": [32,64], "f": 0, "t": 50, "d": [6,108], "a": 1 }, + { "px": [224,96], "src": [32,64], "f": 0, "t": 50, "d": [6,110], "a": 1 }, + { "px": [240,96], "src": [32,64], "f": 0, "t": 50, "d": [6,111], "a": 1 }, + { "px": [0,112], "src": [32,64], "f": 0, "t": 50, "d": [6,112], "a": 1 }, + { "px": [16,112], "src": [32,64], "f": 0, "t": 50, "d": [6,113], "a": 1 }, + { "px": [64,112], "src": [32,64], "f": 0, "t": 50, "d": [6,116], "a": 1 }, + { "px": [80,112], "src": [32,64], "f": 0, "t": 50, "d": [6,117], "a": 1 }, + { "px": [96,112], "src": [32,64], "f": 0, "t": 50, "d": [6,118], "a": 1 }, + { "px": [112,112], "src": [32,64], "f": 0, "t": 50, "d": [6,119], "a": 1 }, + { "px": [128,112], "src": [32,64], "f": 0, "t": 50, "d": [6,120], "a": 1 }, + { "px": [144,112], "src": [32,64], "f": 0, "t": 50, "d": [6,121], "a": 1 }, + { "px": [160,112], "src": [32,64], "f": 0, "t": 50, "d": [6,122], "a": 1 }, + { "px": [176,112], "src": [32,64], "f": 0, "t": 50, "d": [6,123], "a": 1 }, + { "px": [192,112], "src": [32,64], "f": 0, "t": 50, "d": [6,124], "a": 1 }, + { "px": [224,112], "src": [32,64], "f": 0, "t": 50, "d": [6,126], "a": 1 }, + { "px": [240,112], "src": [32,64], "f": 0, "t": 50, "d": [6,127], "a": 1 }, + { "px": [0,128], "src": [32,64], "f": 0, "t": 50, "d": [6,128], "a": 1 }, + { "px": [16,128], "src": [32,64], "f": 0, "t": 50, "d": [6,129], "a": 1 }, + { "px": [48,128], "src": [32,64], "f": 0, "t": 50, "d": [6,131], "a": 1 }, + { "px": [64,128], "src": [32,64], "f": 0, "t": 50, "d": [6,132], "a": 1 }, + { "px": [80,128], "src": [32,64], "f": 0, "t": 50, "d": [6,133], "a": 1 }, + { "px": [96,128], "src": [32,64], "f": 0, "t": 50, "d": [6,134], "a": 1 }, + { "px": [112,128], "src": [32,64], "f": 0, "t": 50, "d": [6,135], "a": 1 }, + { "px": [128,128], "src": [32,64], "f": 0, "t": 50, "d": [6,136], "a": 1 }, + { "px": [144,128], "src": [32,64], "f": 0, "t": 50, "d": [6,137], "a": 1 }, + { "px": [160,128], "src": [32,64], "f": 0, "t": 50, "d": [6,138], "a": 1 }, + { "px": [176,128], "src": [32,64], "f": 0, "t": 50, "d": [6,139], "a": 1 }, + { "px": [224,128], "src": [32,64], "f": 0, "t": 50, "d": [6,142], "a": 1 }, + { "px": [240,128], "src": [32,64], "f": 0, "t": 50, "d": [6,143], "a": 1 }, + { "px": [0,144], "src": [32,64], "f": 0, "t": 50, "d": [6,144], "a": 1 }, + { "px": [16,144], "src": [32,64], "f": 0, "t": 50, "d": [6,145], "a": 1 }, + { "px": [48,144], "src": [32,64], "f": 0, "t": 50, "d": [6,147], "a": 1 }, + { "px": [64,144], "src": [32,64], "f": 0, "t": 50, "d": [6,148], "a": 1 }, + { "px": [80,144], "src": [32,64], "f": 0, "t": 50, "d": [6,149], "a": 1 }, + { "px": [96,144], "src": [32,64], "f": 0, "t": 50, "d": [6,150], "a": 1 }, + { "px": [112,144], "src": [32,64], "f": 0, "t": 50, "d": [6,151], "a": 1 }, + { "px": [128,144], "src": [32,64], "f": 0, "t": 50, "d": [6,152], "a": 1 }, + { "px": [144,144], "src": [32,64], "f": 0, "t": 50, "d": [6,153], "a": 1 }, + { "px": [160,144], "src": [32,64], "f": 0, "t": 50, "d": [6,154], "a": 1 }, + { "px": [176,144], "src": [32,64], "f": 0, "t": 50, "d": [6,155], "a": 1 }, + { "px": [208,144], "src": [32,64], "f": 0, "t": 50, "d": [6,157], "a": 1 }, + { "px": [224,144], "src": [32,64], "f": 0, "t": 50, "d": [6,158], "a": 1 }, + { "px": [240,144], "src": [32,64], "f": 0, "t": 50, "d": [6,159], "a": 1 }, + { "px": [0,160], "src": [32,64], "f": 0, "t": 50, "d": [6,160], "a": 1 }, + { "px": [16,160], "src": [32,64], "f": 0, "t": 50, "d": [6,161], "a": 1 }, + { "px": [48,160], "src": [32,64], "f": 0, "t": 50, "d": [6,163], "a": 1 }, + { "px": [64,160], "src": [32,64], "f": 0, "t": 50, "d": [6,164], "a": 1 }, + { "px": [80,160], "src": [32,64], "f": 0, "t": 50, "d": [6,165], "a": 1 }, + { "px": [96,160], "src": [32,64], "f": 0, "t": 50, "d": [6,166], "a": 1 }, + { "px": [112,160], "src": [32,64], "f": 0, "t": 50, "d": [6,167], "a": 1 }, + { "px": [128,160], "src": [32,64], "f": 0, "t": 50, "d": [6,168], "a": 1 }, + { "px": [144,160], "src": [32,64], "f": 0, "t": 50, "d": [6,169], "a": 1 }, + { "px": [160,160], "src": [32,64], "f": 0, "t": 50, "d": [6,170], "a": 1 }, + { "px": [208,160], "src": [32,64], "f": 0, "t": 50, "d": [6,173], "a": 1 }, + { "px": [224,160], "src": [32,64], "f": 0, "t": 50, "d": [6,174], "a": 1 }, + { "px": [240,160], "src": [32,64], "f": 0, "t": 50, "d": [6,175], "a": 1 }, + { "px": [80,176], "src": [32,64], "f": 0, "t": 50, "d": [6,181], "a": 1 }, + { "px": [96,176], "src": [32,64], "f": 0, "t": 50, "d": [6,182], "a": 1 }, + { "px": [112,176], "src": [32,64], "f": 0, "t": 50, "d": [6,183], "a": 1 }, + { "px": [128,176], "src": [32,64], "f": 0, "t": 50, "d": [6,184], "a": 1 }, + { "px": [144,176], "src": [32,64], "f": 0, "t": 50, "d": [6,185], "a": 1 }, + { "px": [192,176], "src": [32,64], "f": 0, "t": 50, "d": [6,188], "a": 1 }, + { "px": [208,176], "src": [32,64], "f": 0, "t": 50, "d": [6,189], "a": 1 }, + { "px": [224,176], "src": [32,64], "f": 0, "t": 50, "d": [6,190], "a": 1 }, + { "px": [240,176], "src": [32,64], "f": 0, "t": 50, "d": [6,191], "a": 1 }, + { "px": [0,192], "src": [32,64], "f": 0, "t": 50, "d": [6,192], "a": 1 }, + { "px": [16,192], "src": [32,64], "f": 0, "t": 50, "d": [6,193], "a": 1 }, + { "px": [32,192], "src": [32,64], "f": 0, "t": 50, "d": [6,194], "a": 1 }, + { "px": [48,192], "src": [32,64], "f": 0, "t": 50, "d": [6,195], "a": 1 }, + { "px": [80,192], "src": [32,64], "f": 0, "t": 50, "d": [6,197], "a": 1 }, + { "px": [96,192], "src": [32,64], "f": 0, "t": 50, "d": [6,198], "a": 1 }, + { "px": [112,192], "src": [32,64], "f": 0, "t": 50, "d": [6,199], "a": 1 }, + { "px": [176,192], "src": [32,64], "f": 0, "t": 50, "d": [6,203], "a": 1 }, + { "px": [192,192], "src": [32,64], "f": 0, "t": 50, "d": [6,204], "a": 1 }, + { "px": [208,192], "src": [32,64], "f": 0, "t": 50, "d": [6,205], "a": 1 }, + { "px": [224,192], "src": [32,64], "f": 0, "t": 50, "d": [6,206], "a": 1 }, + { "px": [240,192], "src": [32,64], "f": 0, "t": 50, "d": [6,207], "a": 1 }, + { "px": [0,208], "src": [32,64], "f": 0, "t": 50, "d": [6,208], "a": 1 }, + { "px": [16,208], "src": [32,64], "f": 0, "t": 50, "d": [6,209], "a": 1 }, + { "px": [32,208], "src": [32,64], "f": 0, "t": 50, "d": [6,210], "a": 1 }, + { "px": [48,208], "src": [32,64], "f": 0, "t": 50, "d": [6,211], "a": 1 }, + { "px": [144,208], "src": [32,64], "f": 0, "t": 50, "d": [6,217], "a": 1 }, + { "px": [160,208], "src": [32,64], "f": 0, "t": 50, "d": [6,218], "a": 1 }, + { "px": [176,208], "src": [32,64], "f": 0, "t": 50, "d": [6,219], "a": 1 }, + { "px": [192,208], "src": [32,64], "f": 0, "t": 50, "d": [6,220], "a": 1 }, + { "px": [208,208], "src": [32,64], "f": 0, "t": 50, "d": [6,221], "a": 1 }, + { "px": [224,208], "src": [32,64], "f": 0, "t": 50, "d": [6,222], "a": 1 }, + { "px": [240,208], "src": [32,64], "f": 0, "t": 50, "d": [6,223], "a": 1 }, + { "px": [0,224], "src": [32,64], "f": 0, "t": 50, "d": [6,224], "a": 1 }, + { "px": [16,224], "src": [32,64], "f": 0, "t": 50, "d": [6,225], "a": 1 }, + { "px": [32,224], "src": [32,64], "f": 0, "t": 50, "d": [6,226], "a": 1 }, + { "px": [48,224], "src": [32,64], "f": 0, "t": 50, "d": [6,227], "a": 1 }, + { "px": [80,224], "src": [32,64], "f": 0, "t": 50, "d": [6,229], "a": 1 }, + { "px": [96,224], "src": [32,64], "f": 0, "t": 50, "d": [6,230], "a": 1 }, + { "px": [112,224], "src": [32,64], "f": 0, "t": 50, "d": [6,231], "a": 1 }, + { "px": [128,224], "src": [32,64], "f": 0, "t": 50, "d": [6,232], "a": 1 }, + { "px": [144,224], "src": [32,64], "f": 0, "t": 50, "d": [6,233], "a": 1 }, + { "px": [160,224], "src": [32,64], "f": 0, "t": 50, "d": [6,234], "a": 1 }, + { "px": [176,224], "src": [32,64], "f": 0, "t": 50, "d": [6,235], "a": 1 }, + { "px": [192,224], "src": [32,64], "f": 0, "t": 50, "d": [6,236], "a": 1 }, + { "px": [208,224], "src": [32,64], "f": 0, "t": 50, "d": [6,237], "a": 1 }, + { "px": [224,224], "src": [32,64], "f": 0, "t": 50, "d": [6,238], "a": 1 }, + { "px": [240,224], "src": [32,64], "f": 0, "t": 50, "d": [6,239], "a": 1 }, + { "px": [0,240], "src": [32,64], "f": 0, "t": 50, "d": [6,240], "a": 1 }, + { "px": [16,240], "src": [32,64], "f": 0, "t": 50, "d": [6,241], "a": 1 }, + { "px": [32,240], "src": [32,64], "f": 0, "t": 50, "d": [6,242], "a": 1 }, + { "px": [48,240], "src": [32,64], "f": 0, "t": 50, "d": [6,243], "a": 1 }, + { "px": [80,240], "src": [32,64], "f": 0, "t": 50, "d": [6,245], "a": 1 }, + { "px": [96,240], "src": [32,64], "f": 0, "t": 50, "d": [6,246], "a": 1 }, + { "px": [112,240], "src": [32,64], "f": 0, "t": 50, "d": [6,247], "a": 1 }, + { "px": [128,240], "src": [32,64], "f": 0, "t": 50, "d": [6,248], "a": 1 }, + { "px": [144,240], "src": [32,64], "f": 0, "t": 50, "d": [6,249], "a": 1 }, + { "px": [160,240], "src": [32,64], "f": 0, "t": 50, "d": [6,250], "a": 1 }, + { "px": [176,240], "src": [32,64], "f": 0, "t": 50, "d": [6,251], "a": 1 }, + { "px": [192,240], "src": [32,64], "f": 0, "t": 50, "d": [6,252], "a": 1 }, + { "px": [208,240], "src": [32,64], "f": 0, "t": 50, "d": [6,253], "a": 1 }, + { "px": [224,240], "src": [32,64], "f": 0, "t": 50, "d": [6,254], "a": 1 }, + { "px": [240,240], "src": [32,64], "f": 0, "t": 50, "d": [6,255], "a": 1 }, + { "px": [32,176], "src": [32,128], "f": 0, "t": 98, "d": [9,178], "a": 1 }, + { "px": [64,208], "src": [16,112], "f": 0, "t": 85, "d": [11,212], "a": 1 }, + { "px": [128,32], "src": [32,96], "f": 0, "t": 74, "d": [16,40], "a": 1 }, + { "px": [144,32], "src": [32,96], "f": 0, "t": 74, "d": [16,41], "a": 1 }, + { "px": [160,32], "src": [32,96], "f": 0, "t": 74, "d": [16,42], "a": 1 }, + { "px": [96,48], "src": [32,96], "f": 0, "t": 74, "d": [16,54], "a": 1 }, + { "px": [192,64], "src": [32,96], "f": 0, "t": 74, "d": [16,76], "a": 1 }, + { "px": [208,64], "src": [32,96], "f": 0, "t": 74, "d": [16,77], "a": 1 }, + { "px": [224,64], "src": [32,96], "f": 0, "t": 74, "d": [16,78], "a": 1 }, + { "px": [240,64], "src": [32,96], "f": 0, "t": 74, "d": [16,79], "a": 1 }, + { "px": [0,176], "src": [32,96], "f": 0, "t": 74, "d": [16,176], "a": 1 }, + { "px": [16,176], "src": [32,96], "f": 0, "t": 74, "d": [16,177], "a": 1 }, + { "px": [48,176], "src": [32,96], "f": 0, "t": 74, "d": [16,179], "a": 1 }, + { "px": [144,192], "src": [32,96], "f": 0, "t": 74, "d": [16,201], "a": 1 }, + { "px": [80,208], "src": [32,96], "f": 0, "t": 74, "d": [16,213], "a": 1 }, + { "px": [96,208], "src": [32,96], "f": 0, "t": 74, "d": [16,214], "a": 1 }, + { "px": [112,208], "src": [32,96], "f": 0, "t": 74, "d": [16,215], "a": 1 }, + { "px": [176,0], "src": [48,112], "f": 0, "t": 87, "d": [14,11], "a": 1 }, + { "px": [176,16], "src": [48,112], "f": 0, "t": 87, "d": [14,27], "a": 1 }, + { "px": [176,32], "src": [48,112], "f": 0, "t": 87, "d": [14,43], "a": 1 }, + { "px": [176,48], "src": [48,112], "f": 0, "t": 87, "d": [14,59], "a": 1 }, + { "px": [208,80], "src": [48,112], "f": 0, "t": 87, "d": [14,93], "a": 1 }, + { "px": [48,96], "src": [48,112], "f": 0, "t": 87, "d": [14,99], "a": 1 }, + { "px": [208,96], "src": [48,112], "f": 0, "t": 87, "d": [14,109], "a": 1 }, + { "px": [208,112], "src": [48,112], "f": 0, "t": 87, "d": [14,125], "a": 1 }, + { "px": [32,128], "src": [48,112], "f": 0, "t": 87, "d": [14,130], "a": 1 }, + { "px": [32,144], "src": [48,112], "f": 0, "t": 87, "d": [14,146], "a": 1 }, + { "px": [192,144], "src": [48,112], "f": 0, "t": 87, "d": [14,156], "a": 1 }, + { "px": [32,160], "src": [48,112], "f": 0, "t": 87, "d": [14,162], "a": 1 }, + { "px": [64,192], "src": [48,112], "f": 0, "t": 87, "d": [14,196], "a": 1 }, + { "px": [64,224], "src": [48,112], "f": 0, "t": 87, "d": [14,228], "a": 1 }, + { "px": [64,240], "src": [48,112], "f": 0, "t": 87, "d": [14,244], "a": 1 }, + { "px": [176,64], "src": [16,128], "f": 0, "t": 97, "d": [10,75], "a": 1 }, + { "px": [64,176], "src": [48,96], "f": 0, "t": 75, "d": [13,180], "a": 1 }, + { "px": [112,48], "src": [48,128], "f": 0, "t": 99, "d": [15,55], "a": 1 }, + { "px": [80,64], "src": [48,128], "f": 0, "t": 99, "d": [15,69], "a": 1 }, + { "px": [64,80], "src": [48,128], "f": 0, "t": 99, "d": [15,84], "a": 1 }, + { "px": [48,112], "src": [48,128], "f": 0, "t": 99, "d": [15,115], "a": 1 }, + { "px": [208,128], "src": [48,128], "f": 0, "t": 99, "d": [15,141], "a": 1 }, + { "px": [192,160], "src": [48,128], "f": 0, "t": 99, "d": [15,172], "a": 1 }, + { "px": [176,176], "src": [48,128], "f": 0, "t": 99, "d": [15,187], "a": 1 }, + { "px": [160,192], "src": [48,128], "f": 0, "t": 99, "d": [15,202], "a": 1 }, + { "px": [128,208], "src": [48,128], "f": 0, "t": 99, "d": [15,216], "a": 1 }, + { "px": [112,32], "src": [16,96], "f": 0, "t": 73, "d": [12,39], "a": 1 }, + { "px": [80,48], "src": [16,96], "f": 0, "t": 73, "d": [12,53], "a": 1 }, + { "px": [64,64], "src": [16,96], "f": 0, "t": 73, "d": [12,68], "a": 1 }, + { "px": [48,80], "src": [16,96], "f": 0, "t": 73, "d": [12,83], "a": 1 }, + { "px": [32,112], "src": [16,96], "f": 0, "t": 73, "d": [12,114], "a": 1 }, + { "px": [192,128], "src": [16,96], "f": 0, "t": 73, "d": [12,140], "a": 1 }, + { "px": [176,160], "src": [16,96], "f": 0, "t": 73, "d": [12,171], "a": 1 }, + { "px": [160,176], "src": [16,96], "f": 0, "t": 73, "d": [12,186], "a": 1 }, + { "px": [128,192], "src": [16,96], "f": 0, "t": 73, "d": [12,200], "a": 1 } ], - "seed": 6016632, + "seed": 2629548, "overrideTilesetUid": null, "gridTiles": [], "entityInstances": [] @@ -639,5 +931,5 @@ } ], "worlds": [], - "dummyWorldIid": "34d44ef1-8990-11ee-965e-3f1f439075a6" -} + "dummyWorldIid": "4b9683d1-8990-11ee-a35f-a55721c56517" +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index a36f959..6472c98 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,12 +15,16 @@ mod loading; mod menu; mod player; +mod world; + use crate::actions::ActionsPlugin; use crate::audio::InternalAudioPlugin; use crate::loading::LoadingPlugin; use crate::menu::MenuPlugin; use crate::player::PlayerPlugin; +use crate::world::WorldPlugin; + use bevy::app::App; #[cfg(debug_assertions)] use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; @@ -50,6 +54,8 @@ impl Plugin for GamePlugin { ActionsPlugin, // InternalAudioPlugin, // PlayerPlugin, + + WorldPlugin, )); #[cfg(debug_assertions)] diff --git a/src/menu.rs b/src/menu.rs index b23b6dd..6152ea9 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -1,7 +1,7 @@ use crate::loading::TextureAssets; use crate::GameState; use bevy::prelude::*; -use bevy_ecs_ldtk::prelude::*; +// use bevy_ecs_ldtk::prelude::*; use bevy_pancam::{PanCam, PanCamPlugin}; pub struct MenuPlugin; @@ -14,9 +14,9 @@ impl Plugin for MenuPlugin { .add_systems(Update, click_play_button.run_if(in_state(GameState::Menu))) .add_systems(OnExit(GameState::Menu), cleanup_menu) // LDtk level selection resource - .insert_resource(LevelSelection::index(0)) - .add_systems(OnEnter(GameState::Playing), setup_level) - .add_plugins(LdtkPlugin) + // .insert_resource(LevelSelection::index(0)) + // .add_systems(OnEnter(GameState::Playing), setup_level) + // .add_plugins(LdtkPlugin) .add_plugins(PanCamPlugin::default()); } } @@ -39,26 +39,26 @@ impl Default for ButtonColors { #[derive(Component)] struct Menu; -fn setup_level( - mut commands: Commands, - asset_server: Res, - mut camera: Query<(&mut Transform, &mut OrthographicProjection), With>, -) { - // Change camera settings on playing state - info!("Change camera settings on playing state"); - for (mut transform, mut projection) in &mut camera { - projection.scale = 0.5; - transform.translation.x += 1280.0 / 4.0; - transform.translation.y += 720.0 / 4.0; - } +// fn setup_level( +// mut commands: Commands, +// asset_server: Res, +// mut camera: Query<(&mut Transform, &mut OrthographicProjection), With>, +// ) { +// // Change camera settings on playing state +// info!("Change camera settings on playing state"); +// for (mut transform, mut projection) in &mut camera { +// projection.scale = 0.5; +// transform.translation.x += 1280.0 / 4.0; +// transform.translation.y += 720.0 / 4.0; +// } - // Spawn LDTK level - info!("Spawn LDTK level"); - commands.spawn(LdtkWorldBundle { - ldtk_handle: asset_server.load("world.ldtk"), - ..Default::default() - }); -} +// // Spawn LDTK level +// info!("Spawn LDTK level"); +// commands.spawn(LdtkWorldBundle { +// ldtk_handle: asset_server.load("world.ldtk"), +// ..Default::default() +// }); +// } fn setup_menu(mut commands: Commands, textures: Res) { info!("menu"); diff --git a/src/world.rs b/src/world.rs new file mode 100644 index 0000000..bf0917e --- /dev/null +++ b/src/world.rs @@ -0,0 +1,49 @@ +use bevy::prelude::*; +use bevy_ecs_ldtk::prelude::*; +use crate::GameState; + +// use bevy_pancam::{PanCam, PanCamPlugin}; + +pub struct WorldPlugin; + +// This plugin is responsible for spawning the LDtk game world and entities +// The world is only spawned during the State `GameState::Playing` and is removed when that state is exited + +impl Plugin for WorldPlugin { + fn build(&self, app: &mut App) { + app + // LDtk level selection resource + .insert_resource(LevelSelection::index(0)) + .add_systems(OnEnter(GameState::Playing), setup_level) + // .add_systems(OnExit(GameState::Playing), cleanup_world) + .add_plugins(LdtkPlugin); + // .add_plugins(PanCamPlugin::default()); + } +} + +fn setup_level( + mut commands: Commands, + asset_server: Res, + mut camera: Query<(&mut Transform, &mut OrthographicProjection), With>, +) { + // Change camera settings on playing state + info!("Change camera settings on playing state"); + for (mut transform, mut projection) in &mut camera { + projection.scale = 0.5; + transform.translation.x += 1280.0 / 4.0; + transform.translation.y += 720.0 / 4.0; + } + + // Spawn LDTK level + info!("Spawn LDTK level"); + commands.spawn(LdtkWorldBundle { + ldtk_handle: asset_server.load("world.ldtk"), + ..Default::default() + }); +} + +// fn cleanup_world(mut commands: Commands, world: Query) { +// for entity in &mut world.iter() { +// commands.entity(entity).despawn_recursive(); +// } +// } \ No newline at end of file From 2f4b9b2cc1893f7cfd4e0b58fb8a5e58d3e88c1c Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sun, 3 Dec 2023 09:44:46 -0800 Subject: [PATCH 08/49] Entity Spawning --- src/world.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/world.rs b/src/world.rs index bf0917e..bca0b30 100644 --- a/src/world.rs +++ b/src/world.rs @@ -16,8 +16,11 @@ impl Plugin for WorldPlugin { .insert_resource(LevelSelection::index(0)) .add_systems(OnEnter(GameState::Playing), setup_level) // .add_systems(OnExit(GameState::Playing), cleanup_world) - .add_plugins(LdtkPlugin); + .add_plugins(LdtkPlugin) // .add_plugins(PanCamPlugin::default()); + // Register LDtk entities + .register_ldtk_entity::("Queen") + .register_ldtk_entity::("EnemyQueen"); } } @@ -46,4 +49,17 @@ fn setup_level( // for entity in &mut world.iter() { // commands.entity(entity).despawn_recursive(); // } -// } \ No newline at end of file +// } + +// Spawning sprites for LDtk entities +#[derive(Default, Bundle, LdtkEntity)] +struct QueenBundle { + #[sprite_sheet_bundle] + sprite_sheet_bundle: SpriteSheetBundle, +} + +#[derive(Default, Bundle, LdtkEntity)] +struct EnemyQueenBundle { + #[sprite_sheet_bundle] + sprite_sheet_bundle: SpriteSheetBundle, +} \ No newline at end of file From 5d276fde841f64c008882911d76be1bee953822b Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sun, 3 Dec 2023 10:04:21 -0800 Subject: [PATCH 09/49] Set camera spawn location and movement --- src/menu.rs | 31 +++++++------------------------ src/world.rs | 14 +++++++++----- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/menu.rs b/src/menu.rs index 6152ea9..3bf6f86 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -39,37 +39,20 @@ impl Default for ButtonColors { #[derive(Component)] struct Menu; -// fn setup_level( -// mut commands: Commands, -// asset_server: Res, -// mut camera: Query<(&mut Transform, &mut OrthographicProjection), With>, -// ) { -// // Change camera settings on playing state -// info!("Change camera settings on playing state"); -// for (mut transform, mut projection) in &mut camera { -// projection.scale = 0.5; -// transform.translation.x += 1280.0 / 4.0; -// transform.translation.y += 720.0 / 4.0; -// } - -// // Spawn LDTK level -// info!("Spawn LDTK level"); -// commands.spawn(LdtkWorldBundle { -// ldtk_handle: asset_server.load("world.ldtk"), -// ..Default::default() -// }); -// } fn setup_menu(mut commands: Commands, textures: Res) { info!("menu"); commands.spawn(Camera2dBundle::default()).insert(PanCam { grab_buttons: vec![MouseButton::Left, MouseButton::Middle], // which buttons should drag the camera - enabled: true, // when false, controls are disabled. See toggle example. + enabled: false, // when false, controls are disabled. See toggle example. zoom_to_cursor: true, // whether to zoom towards the mouse or the center of the screen - min_scale: 1., // prevent the camera from zooming too far in - max_scale: Some(40.), // prevent the camera from zooming too far out + min_scale: 0.1, // prevent the camera from zooming too far in + max_scale: Some(50.), // prevent the camera from zooming too far out // Optinally specify min_x, max_x, min_y, max_y to limit the camera's movement - ..Default::default() + min_x: Some(-100.), + max_x: Some(400.), + min_y: Some(-100.), + max_y: Some(400.), }); commands diff --git a/src/world.rs b/src/world.rs index bca0b30..d719038 100644 --- a/src/world.rs +++ b/src/world.rs @@ -1,5 +1,6 @@ use bevy::prelude::*; use bevy_ecs_ldtk::prelude::*; +use bevy_pancam::PanCam; use crate::GameState; // use bevy_pancam::{PanCam, PanCamPlugin}; @@ -27,14 +28,17 @@ impl Plugin for WorldPlugin { fn setup_level( mut commands: Commands, asset_server: Res, - mut camera: Query<(&mut Transform, &mut OrthographicProjection), With>, + mut camera: Query<(&mut Transform, &mut OrthographicProjection, &mut PanCam), With>, ) { // Change camera settings on playing state info!("Change camera settings on playing state"); - for (mut transform, mut projection) in &mut camera { - projection.scale = 0.5; - transform.translation.x += 1280.0 / 4.0; - transform.translation.y += 720.0 / 4.0; + for (mut transform, mut projection, mut pancam) in &mut camera { + // Set world camera scale and location + projection.scale = 0.25; + transform.translation.x = 30.0; + transform.translation.y = 30.0; + // Enable pancam plugin + pancam.enabled = true; } // Spawn LDTK level From 5c485dc39e9875de716d5ade1fc3ebcaa3e170a6 Mon Sep 17 00:00:00 2001 From: Carson Webster Date: Sun, 3 Dec 2023 12:20:00 -0800 Subject: [PATCH 10/49] Towers that shoot --- assets/world.ldtk | 68 +++++++++++++++++++++++++++++++++++- src/loading.rs | 2 ++ src/world.rs | 89 +++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 155 insertions(+), 4 deletions(-) diff --git a/assets/world.ldtk b/assets/world.ldtk index 3744af8..055ed0a 100644 --- a/assets/world.ldtk +++ b/assets/world.ldtk @@ -11,7 +11,7 @@ "iid": "4b9683d0-8990-11ee-a35f-a3bea5cd5c8d", "jsonVersion": "1.4.1", "appBuildId": 471015, - "nextUid": 23, + "nextUid": 24, "identifierStyle": "Capitalize", "toc": [], "worldLayout": "Free", @@ -486,6 +486,40 @@ "pivotX": 0, "pivotY": 0, "fieldDefs": [] + }, + { + "identifier": "Tower", + "uid": 23, + "tags": [], + "exportToToc": false, + "doc": null, + "width": 16, + "height": 16, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#EAD4AA", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 64, "y": 16, "w": 16, "h": 16 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] } ], "tilesets": [ { @@ -632,6 +666,38 @@ "defUid": 19, "px": [224,16], "fieldInstances": [] + }, + { + "__identifier": "Tower", + "__grid": [9,13], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 16, "w": 16, "h": 16 }, + "__smartColor": "#EAD4AA", + "__worldX": 144, + "__worldY": 208, + "iid": "d724a570-8990-11ee-a35f-c1f5c794ece6", + "width": 16, + "height": 16, + "defUid": 23, + "px": [144,208], + "fieldInstances": [] + }, + { + "__identifier": "Tower", + "__grid": [2,6], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 16, "w": 16, "h": 16 }, + "__smartColor": "#EAD4AA", + "__worldX": 32, + "__worldY": 96, + "iid": "d8600ba0-8990-11ee-a35f-a3a3b929d633", + "width": 16, + "height": 16, + "defUid": 23, + "px": [32,96], + "fieldInstances": [] } ] }, diff --git a/src/loading.rs b/src/loading.rs index 5458605..dded09e 100644 --- a/src/loading.rs +++ b/src/loading.rs @@ -33,4 +33,6 @@ pub struct TextureAssets { pub bevy: Handle, #[asset(path = "textures/github.png")] pub github: Handle, + #[asset(path = "shmup.png")] + pub shmup: Handle, } diff --git a/src/world.rs b/src/world.rs index d719038..27d923b 100644 --- a/src/world.rs +++ b/src/world.rs @@ -1,7 +1,11 @@ +use std::time::Duration; + +use crate::GameState; use bevy::prelude::*; use bevy_ecs_ldtk::prelude::*; use bevy_pancam::PanCam; -use crate::GameState; + +use crate::loading::TextureAssets; // use bevy_pancam::{PanCam, PanCamPlugin}; @@ -21,7 +25,11 @@ impl Plugin for WorldPlugin { // .add_plugins(PanCamPlugin::default()); // Register LDtk entities .register_ldtk_entity::("Queen") - .register_ldtk_entity::("EnemyQueen"); + .register_ldtk_entity::("EnemyQueen") + .register_ldtk_entity::("Tower") + .add_systems(OnEnter(GameState::Playing), setup_tower_shooting) + .add_systems(Update, tower_shoot.run_if(in_state(GameState::Playing))) + .add_systems(Update, bullet_movement.run_if(in_state(GameState::Playing))); } } @@ -66,4 +74,79 @@ struct QueenBundle { struct EnemyQueenBundle { #[sprite_sheet_bundle] sprite_sheet_bundle: SpriteSheetBundle, -} \ No newline at end of file +} + +#[derive(Default, Component)] +struct Tower; + +#[derive(Default, Bundle, LdtkEntity)] +struct TowerBundle { + tower: Tower, + #[sprite_sheet_bundle] + sprite_sheet_bundle: SpriteSheetBundle, +} + +#[derive(Default, Component)] +struct Bullet; + +#[derive(Resource)] +struct TowerShootTimer { + // How often to spawn a bullet (repeating timer) + timer: Timer, +} + +// Shoot bullets from towers +fn tower_shoot( + mut commands: Commands, + time: Res