From c2e0c5e6b0d8786da081b5f660be0113b03bc5be Mon Sep 17 00:00:00 2001 From: Leonardo Giovanni Scur Date: Mon, 4 Oct 2021 00:15:36 -0300 Subject: [PATCH] V1 done, now just housekeeping --- .gitignore | 1 + .vscode/launch.json | 45 + Cargo.lock | 3488 ++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 16 + assets/OFL.txt | 92 ++ assets/menu-bold.ttf | Bin 0 -> 164948 bytes assets/menu.ttf | Bin 0 -> 158200 bytes assets/tilemap.frag | 77 + assets/tilemap.vert | 44 + build.rs | 17 + logo.ico | Bin 0 -> 67646 bytes src/instructions.txt | 11 + src/main.rs | 580 +++++++ src/tilemap.rs | 280 ++++ 14 files changed, 4651 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 assets/OFL.txt create mode 100644 assets/menu-bold.ttf create mode 100644 assets/menu.ttf create mode 100644 assets/tilemap.frag create mode 100644 assets/tilemap.vert create mode 100644 build.rs create mode 100644 logo.ico create mode 100644 src/instructions.txt create mode 100644 src/main.rs create mode 100644 src/tilemap.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..daad583 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,45 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug executable 'ld49-unstable'", + "cargo": { + "args": [ + "build", + "--bin=ld49-unstable", + "--package=ld49-unstable" + ], + "filter": { + "name": "ld49-unstable", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in executable 'ld49-unstable'", + "cargo": { + "args": [ + "test", + "--no-run", + "--bin=ld49-unstable", + "--package=ld49-unstable" + ], + "filter": { + "name": "ld49-unstable", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..82f7159 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3488 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "ab_glyph" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af0ac006645f86f20f6c6fa4dcaef920bf803df819123626f9440e35835e7d80" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" + +[[package]] +name = "ahash" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "alsa" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75c4da790adcb2ce5e758c064b4f3ec17a30349f9961d3e5e6c9688b052a9e18" +dependencies = [ + "alsa-sys", + "bitflags", + "libc", + "nix", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "android_log-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8052e2d8aabbb8d556d6abbcce2a22b9590996c5f849b9c7ce4544a2e3b984e" + +[[package]] +name = "android_log-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" + +[[package]] +name = "android_logger" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbd542dd180566fad88fd2729a53a62a734843c626638006a9d63ec0688484e" +dependencies = [ + "android_log-sys 0.1.2", + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "anyhow" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" + +[[package]] +name = "approx" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072df7202e63b127ab55acfe16ce97013d5b97bf160489336d3f1840fd78e99e" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "ash" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c69a8137596e84c22d57f3da1b5de1d4230b1742a710091c85f4d7ce50f00f38" +dependencies = [ + "libloading 0.6.7", +] + +[[package]] +name = "async-channel" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-task" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "base-x" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bevy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6b14f8ba7c373fdf7bd27547bb95f2849b2569bf02bbf3d19ca54e9d692de4f" +dependencies = [ + "bevy_internal", + "syn", +] + +[[package]] +name = "bevy-glsl-to-spirv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d5f2f58f0aec3c50a20799792c3705e80dd7df327e79791cacec197e84e5e61" + +[[package]] +name = "bevy_app" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "845be45f00d9c031071f8c68f7681bf791796634efa5f58937275337154cb019" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd798cfbed1fcd406c9b3c978a8cb0a278aa03c4c8abd6edf460ee7cad0987e0" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_diagnostic", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "crossbeam-channel", + "downcast-rs", + "js-sys", + "ndk-glue 0.2.1", + "notify", + "parking_lot", + "rand", + "ron", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_audio" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca3cf9ce76696665e37a68b27ad6f6b0e2d0d85ccad36d8f018d3006812dbde" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "parking_lot", + "rodio", +] + +[[package]] +name = "bevy_core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa5b6d7f68752cfb5b498fc5ea9ad5cfb5de871cdd4d894f2e046fef2e2898ea" +dependencies = [ + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", +] + +[[package]] +name = "bevy_derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6fd06d325cfb4998b26fc84476380611ce6a2d0a8a99b501328c79d7bda104" +dependencies = [ + "Inflector", + "find-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2933425d2febac4a8aadc8aed05ddac2d5891c91ae60dd191b24a6e093dcbeba" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_utils", + "parking_lot", +] + +[[package]] +name = "bevy_dynamic_plugin" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3219befe938ee89dd8b2b78a02cfd835ef93fa930113a91631b093381005ed" +dependencies = [ + "bevy_app", + "libloading 0.7.0", +] + +[[package]] +name = "bevy_ecs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf4745460111bd4285ed6c3e6caa4d882db95471edb02b88c6ad4eac89b923c" +dependencies = [ + "async-channel", + "bevy_ecs_macros", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bitflags", + "downcast-rs", + "fixedbitset 0.4.0", + "fxhash", + "parking_lot", + "rand", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65323f6896068407b768c16ec1aa5c8891d49a28b725d0cbabc663d7f47baaec" +dependencies = [ + "find-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_gilrs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b28a12e991a63fe044605aacf806b8dcdc5aa3af2d4482ba6cb9a1b74fc9392" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_utils", + "gilrs", +] + +[[package]] +name = "bevy_gltf" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9233bfb7e2cf053b51f01d2e57ea5a549438c0e5f08735d595b6a6504d00639e" +dependencies = [ + "anyhow", + "base64", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_transform", + "gltf", + "thiserror", +] + +[[package]] +name = "bevy_input" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91a3a768c59a5965f491cda74fd75a72b4cd7c51c85b5a731dd4d8688582dc5" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", +] + +[[package]] +name = "bevy_internal" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c568981b2911567cba7f6dae7190bac295ffd411bca777edb1b5152b1ccd62" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_core", + "bevy_derive", + "bevy_diagnostic", + "bevy_dynamic_plugin", + "bevy_ecs", + "bevy_gilrs", + "bevy_gltf", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_sprite", + "bevy_tasks", + "bevy_text", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_wgpu", + "bevy_window", + "bevy_winit", + "ndk-glue 0.2.1", +] + +[[package]] +name = "bevy_log" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae100fe4e6fc8f7bbf28c121cda0ced7ab79088374beb7ab8be39120603beb18" +dependencies = [ + "android_log-sys 0.2.0", + "bevy_app", + "bevy_utils", + "console_error_panic_hook", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_math" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb36a879cdc96f554b62dd7c7c02392a9a10e94082e4bc686a8242e1d674e7cc" +dependencies = [ + "bevy_reflect", + "glam 0.13.1", +] + +[[package]] +name = "bevy_pbr" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71f267c27b70d298de91ceac644908fa876cb04857ccb80615dadb1ae969425f" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_window", +] + +[[package]] +name = "bevy_reflect" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d7f57646077e9b016f079e0f39fe2826dce407bb0dccc29b481a33ef7552847" +dependencies = [ + "bevy_reflect_derive", + "bevy_utils", + "downcast-rs", + "erased-serde", + "glam 0.13.1", + "parking_lot", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc3f45d1d49c6e984b492ee13564677d1392828cac50c030e025f74f69386e1" +dependencies = [ + "find-crate", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765f2b966619d16bdb89132848461d9580a622acb5b2bba73cb252e43c9c8830" +dependencies = [ + "anyhow", + "bevy-glsl-to-spirv", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags", + "downcast-rs", + "hex", + "hexasphere", + "image", + "once_cell", + "parking_lot", + "serde", + "shaderc", + "smallvec", + "spirv-reflect", + "thiserror", +] + +[[package]] +name = "bevy_scene" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf1eaa680e61749cc226bcdcd0d968c396fe52c2a4e9e1718422888953ba6c3b" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "parking_lot", + "ron", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9ddb7699b4597794071ebb93b5a0c414407ab8956dc4dc86e59dde721a663d" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "guillotiere", + "rectangle-pack", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77243565dde30ce01e538c615db54bc939a36e4c468b271e86a980004bac7bc9" +dependencies = [ + "async-channel", + "async-executor", + "event-listener", + "futures-lite", + "instant", + "num_cpus", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dfc4f2108582afd5a8995904ea55cd594787f210dac5d1df453cbe92eaab26" +dependencies = [ + "ab_glyph", + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", + "bevy_window", + "glyph_brush_layout", + "thiserror", +] + +[[package]] +name = "bevy_transform" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d166fe11f67dc195b42207e7b096f36680f611afc8f4105b3d81865b66ecf91" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "smallvec", +] + +[[package]] +name = "bevy_ui" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef67dfa943511b8bbca6bf730f183ac5c602a35a7659e58bdf7471154018889d" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "serde", + "smallvec", + "stretch", +] + +[[package]] +name = "bevy_utils" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c384a69b670329f968f59abdcf6506f183cf18b8619d6ec1cbfe33e268e5da20" +dependencies = [ + "ahash 0.7.4", + "getrandom", + "instant", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_wgpu" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e16919cc645aa9a7e988c8644836d0f91c5f1bd23e17bdd9b461a32bf7667b" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_diagnostic", + "bevy_ecs", + "bevy_render", + "bevy_utils", + "bevy_window", + "bevy_winit", + "crossbeam-channel", + "crossbeam-utils", + "futures-lite", + "parking_lot", + "wgpu", +] + +[[package]] +name = "bevy_window" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b96496cb0a9c79ca6744a25e69edff4ba363c14b6070897a66a597db208405f0" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", + "web-sys", +] + +[[package]] +name = "bevy_winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "522dcea62526be0aa5ee35781e98a9f309047050cf684758bc0cd498820111f6" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_utils", + "bevy_window", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] + +[[package]] +name = "bit-set" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bumpalo" +version = "3.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538" + +[[package]] +name = "bytemuck" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" + +[[package]] +name = "cache-padded" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" + +[[package]] +name = "cc" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "winapi 0.3.9", +] + +[[package]] +name = "clang-sys" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10612c0ec0e0a1ff0e97980647cb058a6e7aedb913d01d009c406b8b7d0b26ee" +dependencies = [ + "glob", + "libc", + "libloading 0.7.0", +] + +[[package]] +name = "cmake" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" +dependencies = [ + "cc", +] + +[[package]] +name = "cocoa" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.1", + "core-graphics 0.22.2", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.1", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a909e4d93292cd8e9c42e189f61681eff9d67b6541f96b8a1a737f23737bd001" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" +dependencies = [ + "cfg-if 0.1.10", + "wasm-bindgen", +] + +[[package]] +name = "copyless" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" + +[[package]] +name = "core-foundation" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" +dependencies = [ + "core-foundation-sys 0.6.2", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +dependencies = [ + "core-foundation-sys 0.8.2", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86" +dependencies = [ + "bitflags", + "core-foundation 0.9.1", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.1", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11894b20ebfe1ff903cbdc52259693389eea03b94918a2def2c30c3bf227ad88" +dependencies = [ + "bitflags", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b7e3347be6a09b46aba228d6608386739fb70beff4f61e07422da87b0bb31fa" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98f45f0a21f617cd2c788889ef710b63f075c949259593ea09c826f1e47a2418" +dependencies = [ + "alsa", + "core-foundation-sys 0.8.2", + "coreaudio-rs", + "jni", + "js-sys", + "lazy_static", + "libc", + "mach 0.3.2", + "ndk 0.3.0", + "ndk-glue 0.3.0", + "nix", + "oboe", + "parking_lot", + "stdweb 0.1.3", + "thiserror", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +dependencies = [ + "cfg-if 1.0.0", + "lazy_static", +] + +[[package]] +name = "d3d12" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a60cceb22c7c53035f8980524fdc7f17cf49681a3c154e6757d30afbec6ec4" +dependencies = [ + "bitflags", + "libloading 0.6.7", + "winapi 0.3.9", +] + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "erased-serde" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3de9ad4541d99dc22b59134e7ff8dc3d6c988c89ecd7324bf10a8362b07a2afa" +dependencies = [ + "serde", +] + +[[package]] +name = "euclid" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da96828553a086d7b18dcebfc579bd9628b016f86590d7453c115e490fa74b80" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" + +[[package]] +name = "fastrand" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392e" +dependencies = [ + "instant", +] + +[[package]] +name = "filetime" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "winapi 0.3.9", +] + +[[package]] +name = "find-crate" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" +dependencies = [ + "toml", +] + +[[package]] +name = "fixedbitset" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" + +[[package]] +name = "fixedbitset" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "398ea4fabe40b9b0d885340a2a991a44c8a645624075ad966d21f88688e2b69e" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "fsevent-sys" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e564d24da983c053beff1bb7178e237501206840a3e6bf4e267b9e8ae734a" +dependencies = [ + "libc", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures-core" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d" + +[[package]] +name = "futures-io" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gfx-auxil" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7b33ecf067f2117668d91c9b0f2e5f223ebd1ffec314caa2f3de27bb580186d" +dependencies = [ + "fxhash", + "gfx-hal", + "spirv_cross", +] + +[[package]] +name = "gfx-backend-dx11" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f851d03c2e8f117e3702bf41201a4fafa447d5cb1276d5375870ae7573d069dd" +dependencies = [ + "arrayvec", + "bitflags", + "gfx-auxil", + "gfx-hal", + "libloading 0.6.7", + "log", + "parking_lot", + "range-alloc", + "raw-window-handle", + "smallvec", + "spirv_cross", + "thunderdome", + "winapi 0.3.9", + "wio", +] + +[[package]] +name = "gfx-backend-dx12" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5032d716a2a5f4dafb4675a794c5dc32081af8fbc7303c93ad93ff5413c6559f" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags", + "d3d12", + "gfx-auxil", + "gfx-hal", + "log", + "parking_lot", + "range-alloc", + "raw-window-handle", + "smallvec", + "spirv_cross", + "thunderdome", + "winapi 0.3.9", +] + +[[package]] +name = "gfx-backend-empty" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07ef26a65954cfdd7b4c587f485100d1bb3b0bd6a51b02d817d6c87cca7a91" +dependencies = [ + "gfx-hal", + "log", + "raw-window-handle", +] + +[[package]] +name = "gfx-backend-gl" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6717c50ab601efe4a669bfb44db615e3888695ac8263222aeaa702642b9fbc2" +dependencies = [ + "arrayvec", + "bitflags", + "gfx-auxil", + "gfx-hal", + "glow", + "js-sys", + "khronos-egl", + "libloading 0.6.7", + "log", + "naga", + "parking_lot", + "raw-window-handle", + "spirv_cross", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gfx-backend-metal" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc54b456ece69ef49f8893269ebf24ac70969ed34ba2719c3f3abcc8fbff14e" +dependencies = [ + "arrayvec", + "bitflags", + "block", + "cocoa-foundation", + "copyless", + "foreign-types", + "gfx-auxil", + "gfx-hal", + "log", + "metal", + "naga", + "objc", + "parking_lot", + "range-alloc", + "raw-window-handle", + "spirv_cross", + "storage-map", +] + +[[package]] +name = "gfx-backend-vulkan" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dabe88b1a5c91e0f969b441cc57e70364858066e4ba937deeb62065654ef9bd9" +dependencies = [ + "arrayvec", + "ash", + "byteorder", + "core-graphics-types", + "gfx-hal", + "inplace_it", + "log", + "naga", + "objc", + "parking_lot", + "raw-window-handle", + "smallvec", + "winapi 0.3.9", +] + +[[package]] +name = "gfx-hal" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1d9cc8d3b573dda62d0baca4f02e0209786e22c562caff001d77c389008781d" +dependencies = [ + "bitflags", + "naga", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "gilrs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e986f911d937f4395dfc2a39618dcef452773d32dcdbe0828c623f76588f749" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a5e5bb97bf9a0d9519a28cf38839cf1d6d9bb572b48e3c67202271fec2ed5e7" +dependencies = [ + "core-foundation 0.6.4", + "io-kit-sys", + "libc", + "libudev-sys", + "log", + "nix", + "rusty-xinput", + "stdweb 0.4.20", + "uuid", + "vec_map", + "winapi 0.3.9", +] + +[[package]] +name = "glam" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70155b56080764b8b758e91e4c63d06da0262c0c939f2cd991cd1382087147df" +dependencies = [ + "serde", + "spirv-std", +] + +[[package]] +name = "glam" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3abb554f8ee44336b72d522e0a7fe86a29e09f839a36022fa869a7dfe941a54b" + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "glow" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072136d2c3783f3a92f131acb227bc806d3886278e2a4dc1e9990ec89ef9e70b" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6fb0d1d772daf10ea74528c3aeb12215f6d5b820adf2ecfc93a6578d6779c3c" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", +] + +[[package]] +name = "gltf-derive" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6636de7bf52227363554f1ca2d9cd180fc666129ddd0933097e1f227dfa7293" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gltf-json" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3fc3deb81e6fa04bf808f6be7c3983229552a95b77f687ad96af00f6d3e7d6c" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + +[[package]] +name = "gpu-alloc" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "739e1e53f1e4b5093342e753bcb868e53d28e0c69da9c9ce9632455bfa37ba30" +dependencies = [ + "bitflags", + "gpu-alloc-types", + "tracing", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gpu-descriptor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a70f1e87a3840ed6a3e99e02c2b861e4dbdf26f0d07e38f42ea5aff46cfce2" +dependencies = [ + "bitflags", + "gpu-descriptor-types", + "hashbrown 0.9.1", + "tracing", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +dependencies = [ + "bitflags", +] + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +dependencies = [ + "ahash 0.4.7", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexasphere" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497fa99092cc737fe649ae39194b515fbc15ae27ebd437c9e3d9c8210341e0fc" +dependencies = [ + "glam 0.15.2", + "lazy_static", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "image" +version = "0.23.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", +] + +[[package]] +name = "indexmap" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +dependencies = [ + "autocfg", + "hashbrown 0.11.2", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d88ed757e516714cd8736e65b84ed901f72458512111871f20c1d377abdfbf5e" +dependencies = [ + "bitflags", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "inplace_it" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90953f308a79fe6d62a4643e51f848fbfddcd05975a38e69fdf4ab86a7baf7ca" + +[[package]] +name = "instant" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "716d3d89f35ac6a34fd0eed635395f4c3b76fa889338a4632e5231a8684216bd" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "io-kit-sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21dcc74995dd4cd090b147e79789f8d65959cbfb5f0b118002db869ea3bd0a0" +dependencies = [ + "core-foundation-sys 0.6.2", + "mach 0.2.3", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "khronos-egl" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19cc4a81304db2a0ad69740e83cdc3a9364e3f9bd6d88a87288a4c2deec927b" +dependencies = [ + "libc", + "libloading 0.6.7", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "ld49-unstable" +version = "0.1.0" +dependencies = [ + "bevy", + "rand", + "winres", +] + +[[package]] +name = "libc" +version = "0.2.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" + +[[package]] +name = "libloading" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "libloading" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "libm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" + +[[package]] +name = "libm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "lock_api" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "mach" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" +dependencies = [ + "libc", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" + +[[package]] +name = "metal" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4598d719460ade24c7d91f335daf055bf2a7eec030728ce751814c50cdd6a26c" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "minimp3" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985438f75febf74c392071a975a29641b420dd84431135a6e6db721de4b74372" +dependencies = [ + "minimp3-sys", + "slice-deque", + "thiserror", +] + +[[package]] +name = "minimp3-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90" +dependencies = [ + "cc", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow 0.2.2", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" +dependencies = [ + "libc", + "log", + "miow 0.3.7", + "ntapi", + "winapi 0.3.9", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log", + "mio 0.6.23", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "naga" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05089b2acdf0e6a962cdbf5e328402345a27f59fcde1a59fe97a73e8149d416f" +dependencies = [ + "bit-set", + "bitflags", + "fxhash", + "log", + "num-traits", + "petgraph", + "spirv_headers", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum 0.4.3", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum 0.5.4", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d64d6af06fde0e527b1ba5c7b79a6cc89cfc46325b0b2887dffe8f70197e0c3c" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum 0.5.4", + "thiserror", +] + +[[package]] +name = "ndk-glue" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" +dependencies = [ + "android_logger", + "lazy_static", + "libc", + "log", + "ndk 0.2.1", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-glue" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5caf0c24d51ac1c905c27d4eda4fa0635bbe0de596b8f79235e0b17a4d29385" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk 0.3.0", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-glue" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e9e94628f24e7a3cb5b96a2dc5683acd9230bf11991c2a1677b87695138420" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk 0.4.0", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" +dependencies = [ + "darling", + "proc-macro-crate 0.1.5", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" + +[[package]] +name = "net2" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "nix" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", +] + +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "memchr", + "version_check", +] + +[[package]] +name = "notify" +version = "5.0.0-pre.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f18203a26893ca1d3526cf58084025d5639f91c44f8b70ab3b724f60e819a0" +dependencies = [ + "bitflags", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "libc", + "mio 0.7.13", + "walkdir", + "winapi 0.3.9", +] + +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", + "libm 0.2.1", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" +dependencies = [ + "derivative", + "num_enum_derive 0.4.3", +] + +[[package]] +name = "num_enum" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9bd055fb730c4f8f4f57d45d35cd6b3f0980535b056dc7ff119cee6a66ed6f" +dependencies = [ + "derivative", + "num_enum_derive 0.5.4", +] + +[[package]] +name = "num_enum_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" +dependencies = [ + "proc-macro-crate 0.1.5", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "486ea01961c4a818096de679a8b740b26d9033146ac5291b1c98557658f8cdd9" +dependencies = [ + "proc-macro-crate 1.1.0", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "oboe" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e15e22bc67e047fe342a32ecba55f555e3be6166b04dd157cd0f803dfa9f48e1" +dependencies = [ + "jni", + "ndk 0.4.0", + "ndk-glue 0.4.0", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338142ae5ab0aaedc8275aa8f67f460e43ae0fca76a695a742d56da0a269eadc" +dependencies = [ + "cc", +] + +[[package]] +name = "once_cell" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" + +[[package]] +name = "owned_ttf_parser" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60ac8dda2e5cc09bf6480e3b3feff9783db251710c922ae9369a429c51efdeb0" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi 0.3.9", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "petgraph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +dependencies = [ + "fixedbitset 0.2.0", + "indexmap", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" + +[[package]] +name = "pkg-config" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c9b1041b4387893b91ee6746cddfc28516aff326a3519fb2adf820932c5e6cb" + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +dependencies = [ + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" +dependencies = [ + "rand_core", +] + +[[package]] +name = "range-alloc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" + +[[package]] +name = "raw-window-handle" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" +dependencies = [ + "libc", +] + +[[package]] +name = "rectangle-pack" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831eb2fcb5b72b09c72a3f2d24c09a28d79886512827cd4674d9bac10557f16a" + +[[package]] +name = "redox_syscall" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + +[[package]] +name = "rodio" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65c2eda643191f6d1bb12ea323a9db8d9ba95374e9be3780b5a9fb5cfb8520f" +dependencies = [ + "cpal", + "minimp3", +] + +[[package]] +name = "ron" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45005aa836116903a49cf3461474da697cfe66221762c6e95871092009ec86d6" +dependencies = [ + "base64", + "bitflags", + "serde", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rusty-xinput" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2aa654bc32eb9ca14cce1a084abc9dfe43949a4547c35269a094c39272db3bb" +dependencies = [ + "lazy_static", + "log", + "winapi 0.3.9", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" + +[[package]] +name = "shaderc" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58da8aaf4ad3508598cdf098567114c98d5f455de7d69b1213232ac557bc67ea" +dependencies = [ + "libc", + "shaderc-sys", +] + +[[package]] +name = "shaderc-sys" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bd76ec0bd25f2017a65250373485e43cdc81b5cb8fd83c6115375c8d018cdf9" +dependencies = [ + "cmake", + "libc", +] + +[[package]] +name = "sharded-slab" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740223c51853f3145fe7c90360d2d4232f2b62e3449489c207eccde818979982" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" + +[[package]] +name = "slab" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" + +[[package]] +name = "slice-deque" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25" +dependencies = [ + "libc", + "mach 0.3.2", + "winapi 0.3.9", +] + +[[package]] +name = "slotmap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf34684c5767b87de9119790e92e9a1d60056be2ceeaf16a8e6ef13082aeab1" + +[[package]] +name = "smallvec" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +dependencies = [ + "serde", +] + +[[package]] +name = "spirv-reflect" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecc7af6a7d3ca6d15f4d6b5077df89c77ad1f4b314d0cabee221656d041dad7" +dependencies = [ + "bitflags", + "cc", + "num-traits", + "serde", + "serde_derive", + "spirv_headers", +] + +[[package]] +name = "spirv-std" +version = "0.4.0-alpha.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e2676f3e58345b7c742b266b5bec022445b43e6471b9a00895faec03a52723e" +dependencies = [ + "bitflags", + "num-traits", + "spirv-std-macros", + "spirv-types", +] + +[[package]] +name = "spirv-std-macros" +version = "0.4.0-alpha.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "207e8515dfbb48bff03f64bf5f8388d4e0f2f526ee769cc6556df98477098ca5" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "spirv-types", + "syn", +] + +[[package]] +name = "spirv-types" +version = "0.4.0-alpha.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71cc4b8f7ec707459fdeddb4f137109947045592f5b0c139f7bf1360058bac6b" + +[[package]] +name = "spirv_cross" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60647fadbf83c4a72f0d7ea67a7ca3a81835cf442b8deae5c134c3e0055b2e14" +dependencies = [ + "cc", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "spirv_headers" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f5b132530b1ac069df335577e3581765995cba5a13995cdbbdbc8fb057c532c" +dependencies = [ + "bitflags", + "num-traits", +] + +[[package]] +name = "stdweb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "serde", + "serde_json", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "storage-map" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418bb14643aa55a7841d5303f72cf512cfb323b8cc221d51580500a1ca75206c" +dependencies = [ + "lock_api", +] + +[[package]] +name = "stretch" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0dc6d20ce137f302edf90f9cd3d278866fd7fb139efca6f246161222ad6d87" +dependencies = [ + "lazy_static", + "libm 0.1.4", +] + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "syn" +version = "1.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1d708c221c5a612956ef9f75b37e454e88d1f7b899fbd3a18d4252012d663" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "thiserror" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +dependencies = [ + "once_cell", +] + +[[package]] +name = "thunderdome" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7572415bd688d401c52f6e36f4c8e805b9ae1622619303b9fa835d531db0acae" + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f915eb6abf914599c200260efced9203504c4c37380af10cdf3b7d36970650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "tracing-log" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd0568dbfe3baf7048b7908d2b32bca0d81cd56bec6d2a8f894b01d74f86be3" +dependencies = [ + "ansi_term", + "chrono", + "lazy_static", + "matchers", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae741706df70547fca8715f74a8569677666e7be3454313af70f6e158034485" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "ttf-parser" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" + +[[package]] +name = "unicode-segmentation" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi 0.3.9", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "wasm-bindgen" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fe9756085a84584ee9457a002b7cdfe0bfff169f45d2591d8be1345a6780e35" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" + +[[package]] +name = "web-sys" +version = "0.3.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wgpu" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79a0a0a63fac9492cfaf6e7e4bdf9729c128f1e94124b9e4cbc4004b8cb6d1d8" +dependencies = [ + "arrayvec", + "js-sys", + "naga", + "parking_lot", + "raw-window-handle", + "smallvec", + "syn", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89fa2cc5d72236461ac09c5be967012663e29cb62f1a972654cbf35e49dffa8" +dependencies = [ + "arrayvec", + "bitflags", + "cfg_aliases", + "copyless", + "fxhash", + "gfx-backend-dx11", + "gfx-backend-dx12", + "gfx-backend-empty", + "gfx-backend-gl", + "gfx-backend-metal", + "gfx-backend-vulkan", + "gfx-hal", + "gpu-alloc", + "gpu-descriptor", + "naga", + "parking_lot", + "raw-window-handle", + "smallvec", + "thiserror", + "tracing", + "wgpu-types", +] + +[[package]] +name = "wgpu-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72fa9ba80626278fd87351555c363378d08122d7601e58319be3d6fa85a87747" +dependencies = [ + "bitflags", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winit" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4eda6fce0eb84bd0a33e3c8794eb902e1033d0a1d5a31bc4f19b1b4bbff597" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.1", + "core-graphics 0.22.2", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio 0.6.23", + "mio-extras", + "ndk 0.2.1", + "ndk-glue 0.2.1", + "ndk-sys", + "objc", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winapi 0.3.9", + "x11-dl", +] + +[[package]] +name = "winres" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" +dependencies = [ + "toml", +] + +[[package]] +name = "wio" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "x11-dl" +version = "2.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea26926b4ce81a6f5d9d0f3a0bc401e5a37c6ae14a1bfaa8ff6099ca80038c59" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..cd5ef98 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "ld49-unstable" +authors = ["Leonardo Giovanni Scur "] +version = "0.1.0" +edition = "2018" +build = "build.rs" + +[package.metadata.winres] +ProductName = "Loose Dirt" + +[dependencies] +bevy = "0.5" +rand = "0.8" + +[target.'cfg(windows)'.build-dependencies] +winres = "0.1" diff --git a/assets/OFL.txt b/assets/OFL.txt new file mode 100644 index 0000000..7ddd7b4 --- /dev/null +++ b/assets/OFL.txt @@ -0,0 +1,92 @@ +Copyright (c) 2012, Pablo Impallari (www.impallari.com|impallari@gmail.com), Copyright (c) 2012, Igino Marini. (www.ikern.com|mail@iginomarini.com), Copyright (c) 2012, Brenda Gallo. (gbrenda1987@gmail.com), with Reserved Font Name Quattrocento. +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/menu-bold.ttf b/assets/menu-bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d702ec1bb838edff5a4746af5981d489040879e4 GIT binary patch literal 164948 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 literal 0 HcmV?d00001 diff --git a/assets/tilemap.frag b/assets/tilemap.frag new file mode 100644 index 0000000..ec0e9d6 --- /dev/null +++ b/assets/tilemap.frag @@ -0,0 +1,77 @@ +#version 450 + +layout(location = 0) in vec2 v_Uv; + +layout(location = 0) out vec4 o_Target; + +layout(set = 1, binding = 0) uniform ColorMaterial_color { + vec4 Color; +}; + +layout(set = 1, binding = 1) uniform utexture2D ColorMaterial_texture; +layout(set = 1, binding = 2) uniform sampler ColorMaterial_texture_sampler; +// layout(set = 2, binding = 3) uniform TilemapContext { +// float time; +// vec2 texel_size; +// } Tilemap; + +#define MAP_SAMPLER (usampler2D(ColorMaterial_texture, ColorMaterial_texture_sampler)) +#define MATERIAL_AT_OFFSET(x, y) (textureOffset(MAP_SAMPLER, v_Uv, ivec2((x), (y))).r) + +void main() { + vec4 color; + uint material = texture(MAP_SAMPLER, v_Uv).x; + switch (material) { + case 0: color = vec4(1, 1, 1, 0.01); break; + case 1: + color = vec4(0.5, 0.5, 0.5, 1.0); + + // arbitrary sampling for semi-random looking results + vec4 darken = vec4(0.04, 0.04, 0.04, 0); + if (MATERIAL_AT_OFFSET(-1, 0) != 0) color -= darken; + if (MATERIAL_AT_OFFSET( 1, 0) != 0) color -= darken; + if (MATERIAL_AT_OFFSET( 0, -1) != 0) color -= darken; + if (MATERIAL_AT_OFFSET( 0, 1) != 0) color -= darken; + if (MATERIAL_AT_OFFSET(-2, 2) != 0) color -= darken; + if (MATERIAL_AT_OFFSET( 2, -2) != 0) color -= darken; + if (MATERIAL_AT_OFFSET( 2, -2) != 0) color -= darken; + if (MATERIAL_AT_OFFSET(-2, 2) != 0) color -= darken; + if (MATERIAL_AT_OFFSET(-3, 0) != 0) color -= darken; + if (MATERIAL_AT_OFFSET( 0, -3) != 0) color -= darken; + if (MATERIAL_AT_OFFSET( 0, -3) != 0) color -= darken; + if (MATERIAL_AT_OFFSET(-3, 0) != 0) color -= darken; + break; + case 2: + color = vec4(0.0, 0.1, 1.0, 0.8); + + // darken the water when space above is occupied + vec4 shadow = vec4(0, 0.05, 0.05, 0); + if (MATERIAL_AT_OFFSET(0, -1) == 0) color += shadow; + if (MATERIAL_AT_OFFSET(0, -2) == 0) color += shadow; + if (MATERIAL_AT_OFFSET(0, -3) == 0) color += shadow; + if (MATERIAL_AT_OFFSET(0, -4) == 0) color += shadow; + if (MATERIAL_AT_OFFSET(0, -5) == 0) color += shadow; + if (MATERIAL_AT_OFFSET(0, -6) == 0) color += shadow; + if (MATERIAL_AT_OFFSET(0, -7) == 0) color += shadow; + if (MATERIAL_AT_OFFSET(0, -8) == 0) color += shadow; + break; + case 3: + color = vec4(0.5, 0.5, 0.0, 1.0); + + // darken the sand when near water + vec4 wetness = vec4(0.1, 0.1, 0.05, 0); + if (MATERIAL_AT_OFFSET(-2, 0) == 2) color -= wetness; + if (MATERIAL_AT_OFFSET(-1, 0) == 2) color -= wetness; + if (MATERIAL_AT_OFFSET( 1, 0) == 2) color -= wetness; + if (MATERIAL_AT_OFFSET( 2, 0) == 2) color -= wetness; + if (MATERIAL_AT_OFFSET( 0, -1) == 2) color -= wetness; + if (MATERIAL_AT_OFFSET( 0, 1) == 2) color -= wetness; + break; + default: color = vec4(1, 0, 1, 1); // unknown material + } + + vec2 inner = v_Uv; + + //color = vec4(inner, 0, 1); + o_Target = color; +} \ No newline at end of file diff --git a/assets/tilemap.vert b/assets/tilemap.vert new file mode 100644 index 0000000..0aa3e25 --- /dev/null +++ b/assets/tilemap.vert @@ -0,0 +1,44 @@ +#version 450 + +layout(location = 0) in vec3 Vertex_Position; +layout(location = 1) in vec3 Vertex_Normal; +layout(location = 2) in vec2 Vertex_Uv; + +layout(location = 0) out vec2 v_Uv; + +layout(set = 0, binding = 0) uniform CameraViewProj { + mat4 ViewProj; +}; + +layout(set = 2, binding = 0) uniform Transform { + mat4 Model; +}; +layout(set = 2, binding = 1) uniform Sprite { + vec2 size; + uint flip; +}; + +void main() { + vec2 uv = Vertex_Uv; + + // Flip the sprite if necessary by flipping the UVs + + uint x_flip_bit = 1; // The X flip bit + uint y_flip_bit = 2; // The Y flip bit + + // Note: Here we subtract f32::EPSILON from the flipped UV coord. This is due to reasons unknown + // to me (@zicklag ) that causes the uv's to be slightly offset and causes over/under running of + // the sprite UV sampling which is visible when resizing the screen. + float epsilon = 0.00000011920929; + if ((flip & x_flip_bit) == x_flip_bit) { + uv = vec2(1.0 - uv.x - epsilon, uv.y); + } + if ((flip & y_flip_bit) == y_flip_bit) { + uv = vec2(uv.x, 1.0 - uv.y - epsilon); + } + + v_Uv = uv; + + vec3 position = Vertex_Position * vec3(size, 1.0); + gl_Position = ViewProj * Model * vec4(position, 1.0); +} \ No newline at end of file diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..8808108 --- /dev/null +++ b/build.rs @@ -0,0 +1,17 @@ +#[cfg(windows)] +mod win { + extern crate winres; + + pub fn main() { + if cfg!(target_os = "windows") { + let mut res = winres::WindowsResource::new(); + res.set_icon("logo.ico"); + res.compile().unwrap(); + } + } +} + +fn main() { + #[cfg(windows)] + win::main(); +} \ No newline at end of file diff --git a/logo.ico b/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..d35cd0b31834840181ddaefafab09f37dee71ba5 GIT binary patch literal 67646 zcmeI)F_PV65X5mgBO)Z)fY8U;)FC(E01liH6F4Cx^ckFS7$0MiOg_J@YNp=X=Z2EY z?0>tZZ+hmF^z7w0-ktw``gEMX{(8Ls>D}?maUAc@7jnl+wGw#`-?T($F4#1f9!lUzsU~nU3S*$CvT=^5x~2j`qi0_s5j|#m4Nf-k7q#So6Q@8Z`eO`}57_ z-~6W@=>GrM{V`>KvF6|W#~$eO-(5f7>G`|!|Jd`L=HLE!?EX-`;^V!cpAX#qy+Qek zH~+W2KPX@E=HL9s9_ahQUEc#V-{NETz5m~J_Sd_C@)d9X-T%iP=>C7#dw}LUU>oOFw4c`+x8MH}3!S`PScm zyz%-qzbWth_x?Zjz>WLA^FROn|8)MPAA931JRhikr=P7k8S4Z6`2TLWw7CE1{M)?w z&-2H8)gR5DGoTq6dFP*d*tCaq{yYC;4`{xyzm2o|e`s}m*q^7_xLEi9JOBC8=HLB) z>VeMx*dOEG-}k?V-~W04yLwc5HbpOBe=RdrEM(@6t_w??2F`S?MgZFpod40Nm@sH;krz6!rpZ>{#`YRuDtqqg3zNPQ{cm7ve<(KN8n}5;+&HwBl%wWXT-#B-Y?Q67eK7Z7Y*(sltZ|{G)KAnG?|8dUO zbm;t(_F~O{e#TIJx4H7u`K53E%|Gb@?Vl-Ef6IScFaMNle&sKHlKrJs{Zp>>$$wif z|CB2~`AgsY=N?vlx4H7u`K53E%|Gb@?Y}8kf6IScFaMNle&sK{>L;%Ar(D-B|82ee zQ~u}qj5QtdpR^ZKzT&EX%C$cEZ|misa^)v~>6Ndz>YsA0PyX9_`KMg@$zOWqE3W#d zT*b$vy!VsUj8Xpe)5-I^%K|mQ?Bcm|F&NKDgWzyN1qP) zPuhzqUvbqxdFcqfdwYC+)?Quej=; za;;DP+j{w@T=~ggdgUvw`lnp$lmE6}{wY^}@|RxuimU!9*ZSnYt(Skwm7n~jSH9w^ zf6BE!`ETpxpK|3Vf9aL4xayyBtxx{jdikeZ`N>~;*b$vy!VsUj8Xpe)5-I`HHLlDcAbszpa;l%9Wq|rB}YkLsUttdIS-t(SkunIHVApR#=oOY@Z;>udh==fll^u20-Q>d%lfKloGs zni-$INAsI$`W}{O9|_z2}!+U-NJNQ4e(g=V$EcjBe_q z?5}5o=HL7mdqBOf{@d2e|K54$f8N9HJ-_t&G(Y0$`KzD*e1E$>%2#~*`s%;iAIev} z`RwMiU0>xZzI}c5-|a8uE8cu|^VzPi@)h5{zWVR>m+}>FKD+sB*H`(9Z(m>i-*$gB yzvkB-Xb-dp+5_!@_CR}}J = 0..4; +const PALETTE: &'static [(Element, &'static str, KeyCode)] = &[ + (Element::Rock, "Rock", KeyCode::R), + (Element::Water, "Water", KeyCode::W), + (Element::Sand(0), "Sand", KeyCode::S), +]; + +#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash, StageLabel)] +enum GameStage { + Interact, + Run, + Tally, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum Element { + Air, + Rock, + Water, + Sand(u8), +} + +#[derive(Debug)] +struct Brush { + size: usize, + paint: Element, +} + +#[derive(Debug)] +struct TutorialTimer { + show: Timer, + animate: Timer, +} + +#[derive(Debug)] +struct PaletteItem { + paint: Element, + hotkey: KeyCode, +} + +struct BrushSlider; + +struct ViewCamera; + +struct TutorialWindow; + +fn main() { + let (width, height) = { + fn fit(value: f32) -> usize { + value as usize / DOT_SIZE + } + + (fit(WINDOW_WIDTH), fit(WINDOW_HEIGHT)) + }; + + App::build() + .insert_resource(WindowDescriptor { + width: WINDOW_WIDTH, + height: WINDOW_HEIGHT, + resizable: true, + title: "Loose Dirt".to_owned(), + ..Default::default() + }) + .insert_resource(ClearColor(Color::BLACK)) + .insert_resource(Brush { + size: 1, + paint: PALETTE[0].0, + }) + .insert_resource(TutorialTimer { + show: Timer::from_seconds(5.0, false), + animate: Timer::from_seconds(0.5, false), + }) + .add_stage_after( + CoreStage::Update, + GameStage::Interact, + SystemStage::parallel(), + ) + .add_stage_after(GameStage::Interact, GameStage::Run, SystemStage::parallel()) + .add_stage_after(GameStage::Run, GameStage::Tally, SystemStage::parallel()) + .add_plugins(DefaultPlugins) + .add_plugin(TilemapPlugin::::new( + width, + height, + DOT_SIZE as f32, + Element::Air, + )) + .add_startup_system(init.system()) + .add_system_to_stage(GameStage::Interact, change_element.system()) + .add_system_to_stage(GameStage::Interact, brush.system()) + .add_system_to_stage(GameStage::Run, rules.system()) + .add_system_to_stage(GameStage::Run, update_visuals.system()) + .add_system_to_stage(GameStage::Run, tutorial.system()) + .run(); +} + +fn init( + mut commands: Commands, + mut materials: ResMut>, + asset_server: Res, +) { + let mut camera_bundle = OrthographicCameraBundle::new_2d(); + camera_bundle.orthographic_projection.window_origin = WindowOrigin::Center; + commands + .spawn() + .insert_bundle(camera_bundle) + .insert(ViewCamera); + + asset_server.watch_for_changes().unwrap(); + + let dark = materials.add(Color::rgba(0.0, 0.0, 0.0, 0.7).into()); + let transparent = materials.add(Color::rgba(0.0, 0.0, 0.0, 0.0).into()); + + commands.spawn_bundle(UiCameraBundle::default()); + + commands + .spawn_bundle(NodeBundle { + style: Style { + position_type: PositionType::Absolute, + position: Rect { + top: Val::Px(0.0), + left: Val::Px(0.0), + right: Val::Px(0.0), + bottom: Val::Auto, + }, + align_items: AlignItems::Center, + ..Default::default() + }, + material: dark.clone(), + ..Default::default() + }) + .with_children(|parent| { + for &(element, name, hotkey) in PALETTE { + parent + .spawn_bundle(TextBundle { + style: Style { + size: Size { + width: Val::Auto, + height: Val::Px(20.0), + }, + margin: Rect::all(Val::Px(10.0)), + ..Default::default() + }, + text: Text::with_section( + format!("[{:?}] {}", hotkey, name), + TextStyle { + font: asset_server.load("menu.ttf"), + font_size: 20.0, + color: Color::WHITE, + }, + TextAlignment { + vertical: VerticalAlign::Center, + horizontal: HorizontalAlign::Center, + }, + ), + ..Default::default() + }) + .insert(PaletteItem { + paint: element, + hotkey, + }); + } + + parent.spawn_bundle(NodeBundle { + style: Style { + flex_grow: 1.0, + size: Size { + width: Val::Auto, + height: Val::Undefined, + }, + ..Default::default() + }, + material: transparent.clone(), + ..Default::default() + }); + + parent + .spawn_bundle(NodeBundle { + style: Style { + size: Size { + width: Val::Px(250.0), + height: Val::Auto, + }, + flex_direction: FlexDirection::ColumnReverse, + margin: Rect::all(Val::Px(10.0)), + ..Default::default() + }, + material: transparent.clone(), + ..Default::default() + }) + .with_children(|parent| { + parent.spawn_bundle(TextBundle { + style: Style { + size: Size { + width: Val::Undefined, + height: Val::Px(20.0), + }, + ..Default::default() + }, + text: Text::with_section( + "Brush Size", + TextStyle { + font: asset_server.load("menu.ttf"), + font_size: 20.0, + color: Color::WHITE, + }, + TextAlignment { + vertical: VerticalAlign::Center, + horizontal: HorizontalAlign::Center, + }, + ), + ..Default::default() + }); + parent + .spawn_bundle(NodeBundle { + style: Style { + size: Size { + width: Val::Percent(100.0), + height: Val::Px(2.0), + }, + ..Default::default() + }, + ..Default::default() + }) + .insert(BrushSlider); + }); + }); + + commands + .spawn_bundle(NodeBundle { + style: Style { + position_type: PositionType::Absolute, + size: Size { + width: Val::Percent(100.0), + height: Val::Percent(100.0), + }, + align_content: AlignContent::Center, + align_items: AlignItems::Center, + justify_content: JustifyContent::Center, + ..Default::default() + }, + material: transparent.clone(), + ..Default::default() + }) + .with_children(|parent| { + parent + .spawn_bundle(NodeBundle { + style: Style { + flex_direction: FlexDirection::ColumnReverse, + align_items: AlignItems::Center, + padding: Rect::all(Val::Px(10.0)), + size: Size { + width: Val::Auto, + height: Val::Auto, + }, + ..Default::default() + }, + material: dark.clone(), + ..Default::default() + }) + .with_children(|parent| { + parent.spawn_bundle(TextBundle { + style: Style { + size: Size { + width: Val::Auto, + height: Val::Px(20.0), + }, + margin: Rect { + bottom: Val::Px(5.0), + ..Default::default() + }, + ..Default::default() + }, + text: Text::with_section( + "How to Play", + TextStyle { + font: asset_server.load("menu-bold.ttf"), + font_size: 20.0, + color: Color::WHITE, + }, + TextAlignment { + horizontal: HorizontalAlign::Center, + vertical: VerticalAlign::Top, + }, + ), + ..Default::default() + }); + parent.spawn_bundle(TextBundle { + style: Style { + size: Size { + width: Val::Px(250.0), + height: Val::Auto, + }, + flex_wrap: FlexWrap::Wrap, + ..Default::default() + }, + text: Text::with_section( + include_str!("instructions.txt"), + TextStyle { + font: asset_server.load("menu.ttf"), + font_size: 18.0, + color: Color::WHITE, + }, + TextAlignment { + horizontal: HorizontalAlign::Left, + vertical: VerticalAlign::Top, + }, + ), + ..Default::default() + }); + }) + .insert(TutorialWindow); + }); +} + +fn update_visuals( + brush: Res, + mut tiles: Query<(&Element, &mut Material), Changed>, + mut palette: Query<(&PaletteItem, &mut Text)>, + mut slider: Query<&mut Style, With>, +) { + for (element, mut material) in tiles.iter_mut() { + material.0 = match element { + Element::Air => 0, + Element::Rock => 1, + Element::Water => 2, + Element::Sand(_) => 3, + }; + } + + for (item, mut text) in palette.iter_mut() { + let color = if item.paint == brush.paint { + Color::WHITE + } else { + Color::GRAY + }; + + text.sections[0].style.color = color; + } + + let precession = (brush.size - BRUSH_SIZE.start) as f32 / BRUSH_SIZE.len() as f32; + + for mut slider in slider.iter_mut() { + slider.size.width = Val::Percent(5.0 + 95.0 * precession); + } +} + +fn brush( + mut brush: ResMut, + mut keyboard: EventReader, + mut mouse: EventReader, + palette: Query<&PaletteItem>, +) { + for event in keyboard.iter() { + if let &KeyboardInput { + key_code: Some(key), + state: ElementState::Pressed, + .. + } = event + { + for item in palette.iter() { + if item.hotkey == key { + brush.paint = item.paint; + } + } + } + } + + for event in mouse.iter() { + brush.size = match event.y.partial_cmp(&0.0) { + Some(Ordering::Less) => brush.size.saturating_sub(1).max(BRUSH_SIZE.start), + Some(Ordering::Greater) => (brush.size + 1).min(BRUSH_SIZE.end), + _ => continue, + }; + } +} + +fn change_element( + windows: Res, + brush: Res, + mouse: Res>, + tilemap: Res, + mut tutorial: ResMut, + camera: Query<&Transform, With>, + mut tiles: Query<&mut Element>, +) { + let target = { + let mut pressed_iter = mouse.get_pressed(); + + let target = match pressed_iter.next() { + Some(&MouseButton::Left) => brush.paint, + Some(&MouseButton::Right) => Element::Air, + _ => return, + }; + + if let Some(_) = pressed_iter.next() { + return; + } + + target + }; + + tutorial.show.reset(); + tutorial.show.pause(); + + let window = windows.get_primary().unwrap(); + let window_size_delta = + Vec2::new(window.width(), window.height()) - Vec2::new(WINDOW_WIDTH, WINDOW_HEIGHT); + + let camera = camera.single().unwrap(); + + let cursor = window.cursor_position().unwrap() - window_size_delta / 2.0; + let cursor = camera.compute_matrix().transform_point3(cursor.extend(0.0)); + + let (x, y) = tilemap.px_to_cell(cursor.xy()); + let offsets = -(brush.size as isize)..=brush.size as isize; + + for x_offset in offsets.clone() { + for y_offset in offsets.clone() { + let x = x + x_offset; + let y = y + y_offset; + + let tile = match tilemap.get(x, y) { + Some(tile) => tile, + None => continue, + }; + + let element = tiles.get_component_mut::(tile).ok(); + + if let Some(mut element) = element { + *element = target; + } + } + } +} + +fn tutorial( + time: Res