From 03e1387cb75f709fdda1b9170c4b0e40bbd893ba Mon Sep 17 00:00:00 2001 From: Tyrel Souza <923113+tyrelsouza@users.noreply.github.com> Date: Mon, 14 Oct 2019 15:28:11 -0400 Subject: [PATCH] Initial commit --- .gitignore | 2 + Cargo.lock | 1879 ++++++++++++++++++++++++++++++++++ Cargo.toml | 13 + resources/backing.fs | 12 + resources/backing.vs | 11 + resources/console_no_bg.fs | 17 + resources/console_no_bg.vs | 17 + resources/console_with_bg.fs | 16 + resources/console_with_bg.vs | 17 + resources/example_tiles.jpg | Bin 0 -> 1928 bytes resources/example_tiles.xcf | Bin 0 -> 2957 bytes resources/mltest.xp | Bin 0 -> 62 bytes resources/nyan.xp | Bin 0 -> 393 bytes resources/scanlines.fs | 26 + resources/scanlines.vs | 11 + resources/terminal8x8.jpg | Bin 0 -> 44266 bytes resources/vga8x16.jpg | Bin 0 -> 38874 bytes src/main.rs | 205 ++++ 18 files changed, 2226 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 resources/backing.fs create mode 100644 resources/backing.vs create mode 100644 resources/console_no_bg.fs create mode 100644 resources/console_no_bg.vs create mode 100644 resources/console_with_bg.fs create mode 100644 resources/console_with_bg.vs create mode 100644 resources/example_tiles.jpg create mode 100644 resources/example_tiles.xcf create mode 100644 resources/mltest.xp create mode 100644 resources/nyan.xp create mode 100644 resources/scanlines.fs create mode 100644 resources/scanlines.vs create mode 100644 resources/terminal8x8.jpg create mode 100644 resources/vga8x16.jpg create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53eaa21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +**/*.rs.bk diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..2821a41 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1879 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "adler32" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ahash" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "const-random 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "andrew" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "line_drawing 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rusttype 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "android_glue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "approx" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "arrayvec" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "arrayvec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "atom" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "autocfg" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "backtrace" +version = "0.3.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bitflags" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bresenham" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bumpalo" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "c2-chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "calloop" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cgl" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gleam 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cgmath" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cocoa" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "const-random" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "const-random-macro 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "const-random-macro" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "core-foundation" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "core-foundation-sys" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "core-graphics" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "core-video-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crc32fast" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-queue" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "deflate" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "derivative" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "dispatch" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "dlib" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "downcast-rs" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "either" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "failure" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "failure_derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "flate2" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "getrandom" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gl_generator" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gl_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gleam" +version = "0.6.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glow" +version = "0.3.0-alpha3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", + "slotmap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glutin" +version = "0.22.0-alpha3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "cgl 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "cocoa 0.18.4 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)", + "derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "glutin_egl_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "glutin_emscripten_sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glutin_gles2_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "glutin_glx_sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "glutin_wgl_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winit 0.20.0-alpha3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glutin_emscripten_sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "glutin_gles2_sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "x11-dl 2.18.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hashbrown" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ahash 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heck" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hellorust" +version = "0.1.0" +dependencies = [ + "rltk 0.4.4 (git+https://github.com/thebracket/rltk_rs)", + "specs 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "specs-derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hibitset" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atom 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "image" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "png 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "inflate" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jpeg-decoder" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "js-sys" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lazycell" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.62" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libloading" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "line_drawing" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lock_api" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lock_api" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memchr" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "memoffset" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio" +version = "0.6.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-extras" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mopa" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nix" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "nom" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-integer" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-iter" +version = "0.1.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-rational" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-traits" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num_cpus" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "objc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ordered-float" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "osmesa-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pkg-config" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "png" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "deflate 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)", + "inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-hack" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro2" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xorshift" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "raw-window-handle" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon-core" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rltk" +version = "0.4.4" +source = "git+https://github.com/thebracket/rltk_rs#9441dbe7b5b5af3a9cb53cafaac58d25ad0742bf" +dependencies = [ + "bresenham 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cgmath 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", + "gl_generator 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glow 0.3.0-alpha3 (registry+https://github.com/rust-lang/crates.io-index)", + "glutin 0.22.0-alpha3 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.22.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-timer 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rusttype" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rusttype 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rusttype" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stb_truetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "same-file" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "send_wrapper" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "shared_library" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "shred" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "mopa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "shrev" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slotmap" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "smallvec" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "smithay-client-toolkit" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "andrew 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-protocols 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sourcefile" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "specs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hibitset 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "shred 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "shrev 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tuple_utils 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "specs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "stb_truetype" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "syn" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "synstructure" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-executor" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-timer" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tuple_utils" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-segmentation" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "walkdir" +version = "2.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasi" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wasm-bindgen" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wasm-bindgen-webidl" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-timer" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", + "send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wayland-client" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "calloop 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "downcast-rs 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-commons 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-scanner 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-sys 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wayland-commons" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-sys 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wayland-protocols" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-commons 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-scanner 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wayland-scanner" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wayland-sys" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "web-sys" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", + "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-webidl 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "weedle" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winit" +version = "0.20.0-alpha3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "calloop 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cocoa 0.18.4 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)", + "core-video-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "dispatch 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-window-handle 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "smithay-client-toolkit 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "x11-dl 2.18.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "x11-dl" +version = "2.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "xdg" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "xml-rs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" +"checksum ahash 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)" = "b35dfc96a657c1842b4eb73180b65e37152d4b94d0eb5cb51708aee7826950b4" +"checksum andrew 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9b7f09f89872c2b6b29e319377b1fbe91c6f5947df19a25596e121cf19a7b35e" +"checksum android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" +"checksum approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3" +"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +"checksum atom 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3c86699c3f02778ec07158376991c8f783dd1f2f95c579ffaf0738dc984b2fe2" +"checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" +"checksum backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)" = "690a62be8920ccf773ee00ef0968649b0e724cda8bd5b12286302b4ae955fdf5" +"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" +"checksum bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a606a02debe2813760609f57a64a2ffd27d9fdf5b2f133eaca0b248dd92cdd2" +"checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +"checksum bresenham 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bfc1116225f66d2ea341a26503f83a6b1205070a6f7199ce1f1550ead91f6fd7" +"checksum bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" +"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" +"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" +"checksum calloop 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7aa2097be53a00de9e8fc349fea6d76221f398f5c4fa550d420669906962d160" +"checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum cgl 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "55e7ec0b74fe5897894cbc207092c577e87c52f8a59e8ca8d97ef37551f60a49" +"checksum cgmath 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "283944cdecc44bf0b8dd010ec9af888d3b4f142844fdbe026c20ef68148d6fe7" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum cocoa 0.18.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf79daa4e11e5def06e55306aa3601b87de6b5149671529318da048f67cdd77b" +"checksum const-random 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7b641a8c9867e341f3295564203b1c250eb8ce6cb6126e007941f78c4d2ed7fe" +"checksum const-random-macro 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c750ec12b83377637110d5a57f5ae08e895b06c4b16e2bdbf1a94ef717428c59" +"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" +"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" +"checksum core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "56790968ab1c8a1202a102e6de05fc6e1ec87da99e4e93e9a7d13efbfc1e95a9" +"checksum core-video-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8dc065219542086f72d1e9f7aadbbab0989e980263695d129d502082d063a9d0" +"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" +"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" +"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" +"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" +"checksum deflate 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)" = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4" +"checksum derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "942ca430eef7a3806595a6737bc388bf51adb888d3fc0dd1b50f1c170167ee3a" +"checksum dispatch 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e93ca78226c51902d7aa8c12c988338aadd9e85ed9c6be8aaac39192ff3605" +"checksum dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "77e51249a9d823a4cb79e3eca6dcd756153e8ed0157b6c04775d04bf1b13b76a" +"checksum downcast-rs 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5fe414cc2fd4447b7da94b27ddfb6831a8a06f35f6d077ab5613ec703866c49a" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" +"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" +"checksum flate2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "ad3c5233c9a940c8719031b423d7e6c16af66e031cb0420b0896f5245bf181d3" +"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" +"checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" +"checksum gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39a23d5e872a275135d66895d954269cf5e8661d234eb1c2480f4ce0d586acbd" +"checksum gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ca98bbde17256e02d17336a6bdb5a50f7d0ccacee502e191d3e3d0ec2f96f84a" +"checksum gl_generator 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +"checksum gleam 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "cae10d7c99d0e77b4766e850a60898a17c1abaf01075531f1066f03dc7dc5fc5" +"checksum glow 0.3.0-alpha3 (registry+https://github.com/rust-lang/crates.io-index)" = "cd065222bc1c5bd0255dc974f237ef595bfcd4174422f0e8d8df96f1d14bb816" +"checksum glutin 0.22.0-alpha3 (registry+https://github.com/rust-lang/crates.io-index)" = "fcdd3592b515014281a21a42addd91f41eaff0c5f54295ee28dac8ea6bbbceba" +"checksum glutin_egl_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "23f48987ab6cb2b61ad903b59e54a2fd0c380a7baff68cffd6826b69a73dd326" +"checksum glutin_emscripten_sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "245b3fdb08df6ffed7585365851f8404af9c7e2dd4b59f15262e968b6a95a0c7" +"checksum glutin_gles2_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "89996c30857ae1b4de4b5189abf1ea822a20a9fe9e1c93e5e7b862ff0bdd5cdf" +"checksum glutin_glx_sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1290a5ca5e46fcfa7f66f949cc9d9194b2cb6f2ed61892c8c2b82343631dba57" +"checksum glutin_wgl_sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f801bbc91efc22dd1c4818a47814fc72bf74d024510451b119381579bfa39021" +"checksum hashbrown 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6587d09be37fb98a11cb08b9000a3f592451c1b1b613ca69d949160e313a430a" +"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +"checksum hibitset 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "47e7292fd9f7fe89fa35c98048f2d0a69b79ed243604234d18f6f8a1aa6f408d" +"checksum image 0.22.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4be8aaefbe7545dc42ae925afb55a0098f226a3fe5ef721872806f44f57826" +"checksum inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" +"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +"checksum jpeg-decoder 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "c1aae18ffeeae409c6622c3b6a7ee49792a7e5a062eea1b135fbb74e301792ba" +"checksum js-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)" = "2cc9a97d7cec30128fd8b28a7c1f9df1c001ceb9b441e2b755e24130a6b43c79" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" +"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" +"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +"checksum line_drawing 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5cc7ad3d82c845bdb5dde34ffdcc7a5fb4d2996e1e1ee0f19c33bc80e15196b9" +"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" +"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" +"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" +"checksum miniz_oxide 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "304f66c19be2afa56530fa7c39796192eef38618da8d19df725ad7c6d6b2aaae" +"checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" +"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum mopa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a785740271256c230f57462d3b83e52f998433a7062fc18f96d5999474a9f915" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" +"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" +"checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e" +"checksum num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" +"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" +"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" +"checksum objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "31d20fd2b37e07cf5125be68357b588672e8cefe9a96f8c17a9d46053b3e590d" +"checksum ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518" +"checksum osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" +"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" +"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +"checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" +"checksum png 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8422b27bb2c013dd97b9aef69e161ce262236f49aaf46a0489011c8ff0264602" +"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" +"checksum proc-macro-hack 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "114cdf1f426eb7f550f01af5f53a33c0946156f6814aec939b3bd77e844f9a9d" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90cf5f418035b98e655e9cdb225047638296b862b42411c4e45bb88d700f7fc0" +"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" +"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +"checksum rand_xorshift 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "77d416b86801d23dde1aa643023b775c3a462efc0ed96443add11546cdf1dca8" +"checksum raw-window-handle 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "af3d3b2e1053b3ff2171efc29a8bff3439ce6b2ce6a0432695134bc1c7ff8e87" +"checksum rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83a27732a533a1be0a0035a111fe76db89ad312f6f0347004c220c57f209a123" +"checksum rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "98dcf634205083b17d0861252431eb2acbfb698ab7478a2d20de07954f47ec7b" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +"checksum rltk 0.4.4 (git+https://github.com/thebracket/rltk_rs)" = "" +"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum rusttype 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "310942406a39981bed7e12b09182a221a29e0990f3e7e0c971f131922ed135d5" +"checksum rusttype 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6fa38506b5cbf2fb67f915e2725cb5012f1b9a785b0ab55c4733acda5f6554ef" +"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" +"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" +"checksum shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" +"checksum shred 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d15d46c92f8c0aed110a132f3c68a8cdd390048f51fa547c89dc571ba1e01191" +"checksum shrev 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b5752e017e03af9d735b4b069f53b7a7fd90fefafa04d8bd0c25581b0bff437f" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"checksum slotmap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "759fd553261805f128e2900bf69ab3d034260bc338caf7f0ee54dbf035c85acd" +"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" +"checksum smithay-client-toolkit 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "93960e8975909fcb14cc755de93af2149d8b8f4eb368315537d40cfd0f324054" +"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" +"checksum specs 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4943fde8c5d3d14c3d19d2a4c7abbd7b626c270a19e6cd35252294a48feb698c" +"checksum specs-derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a63549fa0d4a6f76e99e6634c328f25d0c9fa8ad6f8498aef74f6c35c0b269e5" +"checksum stb_truetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "824210d6fb52cbc3ad2545270ead6860c7311aa5450642b078da4515937b6f7a" +"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" +"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" +"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" +"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" +"checksum tuple_utils 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44834418e2c5b16f47bedf35c28e148db099187dd5feee6367fb2525863af4f1" +"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" +"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" +"checksum wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "cd34c5ba0d228317ce388e87724633c57edca3e7531feb4e25e35aaa07a656af" +"checksum wasm-bindgen-backend 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "927196b315c23eed2748442ba675a4c54a1a079d90d9bdc5ad16ce31cf90b15b" +"checksum wasm-bindgen-macro 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "92c2442bf04d89792816650820c3fb407af8da987a9f10028d5317f5b04c2b4a" +"checksum wasm-bindgen-macro-support 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "9c075d27b7991c68ca0f77fe628c3513e64f8c477d422b859e03f28751b46fc5" +"checksum wasm-bindgen-shared 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "83d61fe986a7af038dd8b5ec660e5849cbd9f38e7492b9404cc48b2b4df731d1" +"checksum wasm-bindgen-webidl 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "9b979afb0535fe4749906a674082db1211de8aef466331d43232f63accb7c07c" +"checksum wasm-timer 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "aa3e01d234bb71760e685cfafa5e2c96f8ad877c161a721646356651069e26ac" +"checksum wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "af1080ebe0efabcf12aef2132152f616038f2d7dcbbccf7b2d8c5270fe14bcda" +"checksum wayland-commons 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "bb66b0d1a27c39bbce712b6372131c6e25149f03ffb0cd017cf8f7de8d66dbdb" +"checksum wayland-protocols 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6cc286643656742777d55dc8e70d144fa4699e426ca8e9d4ef454f4bf15ffcf9" +"checksum wayland-scanner 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93b02247366f395b9258054f964fe293ddd019c3237afba9be2ccbe9e1651c3d" +"checksum wayland-sys 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d94e89a86e6d6d7c7c9b19ebf48a03afaac4af6bc22ae570e9a24124b75358f4" +"checksum web-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)" = "c84440699cd02ca23bed6f045ffb1497bc18a3c2628bd13e2093186faaaacf6b" +"checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum winit 0.20.0-alpha3 (registry+https://github.com/rust-lang/crates.io-index)" = "27c947714bd09779bb28fb7ac85685d5b68ab60d17349ed0ea7ae9484726024d" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +"checksum x11-dl 2.18.4 (registry+https://github.com/rust-lang/crates.io-index)" = "be65e1342a3baae65439cd03306778831a3d133b0d20243a7fb83fd5cf403c58" +"checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" +"checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..e081d3c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "hellorust" +version = "0.1.0" +authors = ["Tyrel Souza <923113+tyrelsouza@users.noreply.github.com>"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +rltk = { git = "https://github.com/thebracket/rltk_rs" } +specs = "0.15.0" +specs-derive = "0.4.0" + diff --git a/resources/backing.fs b/resources/backing.fs new file mode 100644 index 0000000..fcbebd0 --- /dev/null +++ b/resources/backing.fs @@ -0,0 +1,12 @@ +#version 330 core +out vec4 FragColor; + +in vec2 TexCoords; + +uniform sampler2D screenTexture; + +void main() +{ + vec3 col = texture(screenTexture, TexCoords).rgb; + FragColor = vec4(col, 1.0); +} \ No newline at end of file diff --git a/resources/backing.vs b/resources/backing.vs new file mode 100644 index 0000000..f35dcae --- /dev/null +++ b/resources/backing.vs @@ -0,0 +1,11 @@ +#version 330 core +layout (location = 0) in vec2 aPos; +layout (location = 1) in vec2 aTexCoords; + +out vec2 TexCoords; + +void main() +{ + TexCoords = aTexCoords; + gl_Position = vec4(aPos.x, aPos.y, 0.0, 1.0); +} diff --git a/resources/console_no_bg.fs b/resources/console_no_bg.fs new file mode 100644 index 0000000..0dae487 --- /dev/null +++ b/resources/console_no_bg.fs @@ -0,0 +1,17 @@ +#version 330 core +out vec4 FragColor; + +in vec3 ourColor; +in vec2 TexCoord; +in vec3 ourBackground; + +// texture sampler +uniform sampler2D texture1; + +void main() +{ + vec4 original = texture(texture1, TexCoord); + if (original.r < 0.1f || original.g < 0.1f || original.b < 0.1f) discard; + vec4 fg = original * vec4(ourColor, 1.f); + FragColor = fg; +} diff --git a/resources/console_no_bg.vs b/resources/console_no_bg.vs new file mode 100644 index 0000000..3185e65 --- /dev/null +++ b/resources/console_no_bg.vs @@ -0,0 +1,17 @@ +#version 330 core +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec3 aColor; +layout (location = 2) in vec3 bColor; +layout (location = 3) in vec2 aTexCoord; + +out vec3 ourColor; +out vec3 ourBackground; +out vec2 TexCoord; + +void main() +{ + gl_Position = vec4(aPos, 1.0); + ourColor = aColor; + ourBackground = bColor; + TexCoord = vec2(aTexCoord.x, aTexCoord.y); +} \ No newline at end of file diff --git a/resources/console_with_bg.fs b/resources/console_with_bg.fs new file mode 100644 index 0000000..ae9e4fd --- /dev/null +++ b/resources/console_with_bg.fs @@ -0,0 +1,16 @@ +#version 330 core +out vec4 FragColor; + +in vec3 ourColor; +in vec2 TexCoord; +in vec3 ourBackground; + +// texture sampler +uniform sampler2D texture1; + +void main() +{ + vec4 original = texture(texture1, TexCoord); + vec4 fg = original.r > 0.1f || original.g > 0.1f || original.b > 0.1f ? original * vec4(ourColor, 1.f) : vec4(ourBackground, 1.f); + FragColor = fg; +} diff --git a/resources/console_with_bg.vs b/resources/console_with_bg.vs new file mode 100644 index 0000000..3185e65 --- /dev/null +++ b/resources/console_with_bg.vs @@ -0,0 +1,17 @@ +#version 330 core +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec3 aColor; +layout (location = 2) in vec3 bColor; +layout (location = 3) in vec2 aTexCoord; + +out vec3 ourColor; +out vec3 ourBackground; +out vec2 TexCoord; + +void main() +{ + gl_Position = vec4(aPos, 1.0); + ourColor = aColor; + ourBackground = bColor; + TexCoord = vec2(aTexCoord.x, aTexCoord.y); +} \ No newline at end of file diff --git a/resources/example_tiles.jpg b/resources/example_tiles.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca8aecd79d5a2f953b0b61759d2a3cb73553743c GIT binary patch literal 1928 zcmex=LJ%Z3brsW+o;O z0s6Oj-S z5fuR$!pIEN!@|nR%E~Fi%grl7GWdUpL6C!yfsuikQILU2kdaxC@&6G9DWCuoGa~~M zVBuh7WoHA)F=EIuvM@2TvHriszys97B)}}dz`*#;^4erQ>66u#=C!UGpVsrhjbeRr zGs?-rT=i|r?CSxdzeC^>qYV0l06#Di6$BWVm>8K^5jHZjFfuW)vat(`m^e%TMkNO@ zni*M{VwfhB9Xd4agTu5-epV7+j#wJGy^6bZ&rYQLRY!PJj+$_g`D@PY@@4yhhDrld z5HkZa!b}FBk<5YuQ1h4>8SNP#%-~tKG5O)NFzuRm6B&9MH(cK>%Jgz``CX6!@<0Qa z7+H`^U}RzzWDrs`bc7kg1Ty5qDvjKpMLSNaW<0VgRLxWpf47?Jxn!&CC-YPm�=C zvNITEGvB|v4>VF+0O$y2HfBz^tAO5SU=b8jR5A=~6cBbaGIl5|nlNe6MyQ|J?3wb` zHm#lVQuabk!pCU^7T0YP(z+*ne(%%7G3oj=^U&-`Vv6U#X7ZlpFuUDsk~?3s+Ou}j zuW9?rgO6@~>BrhI?XQA?UX{z{-ZR!3FK%fz7aEi$YU}tuaWf)=)dX^}}&##ZSBD&l5HC*~_uT^a9jyIx~DS96N)p24bAPq+!{<_AiWQ3POsyPGE^XvKC{@L( K5Pm=J|4jhm4v;e0T4T{9HUX(1^lJy|3Br8r6J234w znWPQ{1Y~79dU62`_K=~{mQEcyaO5iFfeu{+4+&AAF4c1{DMdkw{(xTS@El%#_nh;c z`x$O-K6ofRs%;40+>|7WqG;d1QPhuM7r|(}`vKV5Td;)<)`wsLu(Mzv`7y>_2K;UC z7n+cIv9|r-L1Swd-bw09w{{x(Zlf-IySaN;xV@A}<1Y&Yy7@qFHWr&Zn{^*eQ!!)r z@%@HiY~SCki|1k+&D!?;?HwUT+~Q6X>4NmhO|pcW?*-#eA{<5kb#x4Tn{2#;k3KRU z>b1?SrXYRhmw?U3|F-GxE$(e??h2b*wYv=ipWoitFdDm)2Jz|lx4fNqkK#E@E&AEi ziyuzz3kSh3_1f3Xo$b9XGD613oCc3?Y6KR=@#k%LdN+sn@zGf@9OHEjY#fKD;&W56 zFck-<;`3ASg{gQRVyu+$Is*Z&f%D(+V{p{RI3B?Qe|;(*t8L5)KH_jKc4o zdErz7sL|eB_qemJHMBC)wTh-!>l*-ZBxG5xYgve3nC|Fl zpgY?ZO0|NtQbn(jd~SQ-SOd!?`DP&B zEUvqXP-Cs3SE}W5y?}9+t0<16C~h0~cBV@|rMu7fyWI}bD_S{UZWPu~ty%9-R2v$U z97l4k2{h1s)u|TC>-l27QYa#=+~`p4w$)Y!jx$g!>k@Uc*WKR_;>x8;U8`xiVxe3r zlMXG(QU-vMreP(dtpkrjzTT*o*54lt9$v9f)z`IpQ7dXSz2sqFB(5cS!<*~A?C5$0 z)$&@U+^E&_8gwrqghvbyBwYli!R`RF)GOt6RIRR7%OzCNJCx!K0EXZv4IE_wfTz3k z{;BSZj=okYYLybuh2jV!odLpC5s(EWFzxQo5b(>6hN`P;#bRZ>rk7C>$}0-w#9*W- zxIE_3fJ~+GS{;g4HF6n10N0-InD5XOEjfzyL{XktiX^qpU!vw)^9E>2W(?4jF_Pil zT64W)BbixSNoCYbJfkLaIe<8_VcV{2+Xlffz0tEkZ*&*{Y&^A`Ok|UJC6~yrWB_|2 z+gMY7TehF?Pa~d4EUT$3qyCjra~R{uZriji({c%B2J+3~y34t2emS4brc-WwwoPv_IQ%$-DnNx3SiEZd@Kinfe3<-wrA)y#4xm5D3) z6*ZA2MBW(;9$q}DX5-mhGMxafB$aHyNL(A7H{h2>b|sz5E@!i;{7P;~h3;j;z$1o- zA;YD%g1rG|nMtP-tEw7bNu^2mqHO}qfS+vIB5100xb)>h%PB=oCo+kI8c$~o z3Z`ZnxT*nU0SOd(hcg5W<+GV31ui9-&!kq9P+k-vCk7j$h|6OhpnzmN8PCPlbT*sx zxXQTpgvY!Anvxyyi6V;16H%6ZO~pV{h%rG^<_HnW{o`0T65%;MbS)%Axd;ys2bsg6 z>kfw|!7%;NFMoHGL z=->d2H3iT>|5Yp;f?QXwL_;Bg=OZzqDHh{cPgDJ)qhNm&V!wvFW)Pub{m^ng1;6t1c;dnd|Z+I{gcZj^<&Glc#B7zX*;d@vB zz8rLqOcQ58A!Zn0>{(1;! wCYJ#OaP0|?`50&lIqba!mR-09)54l+;jR`a?8o-Me~173ZQsCAU-(A-1H*rZ-~a#s literal 0 HcmV?d00001 diff --git a/resources/mltest.xp b/resources/mltest.xp new file mode 100644 index 0000000000000000000000000000000000000000..640adc793209be354d4e702025cd133137caa6e6 GIT binary patch literal 62 zcmb2|=3oE=?%)6a|F2hLV`Jk}NMlTLXA}5ge@baGE4Mo<+lmYIS)1o1gc&MCG<(XH PMlk5b{gax(#J~UmJ+>0u literal 0 HcmV?d00001 diff --git a/resources/nyan.xp b/resources/nyan.xp new file mode 100644 index 0000000000000000000000000000000000000000..f27c58d6d90ba072880479504d8c606380e6d7f3 GIT binary patch literal 393 zcmV;40e1c$iwFP!000003+ z?6Z%+k7Vgn5}W(@F@_{WL?0o9@1@Yu%c!B@LD>Zh7@KS*k3BPmua#q`7&0Ut+T^@NPLt-Rh2k%^JWTt3DpB nM$+mfeUIx_d(YL+Xy1}2y_<(o-(&C|Mqcy}l1{P)Ks*2do1Vky literal 0 HcmV?d00001 diff --git a/resources/scanlines.fs b/resources/scanlines.fs new file mode 100644 index 0000000..fe509f4 --- /dev/null +++ b/resources/scanlines.fs @@ -0,0 +1,26 @@ +#version 330 core +out vec4 FragColor; + +in vec2 TexCoords; + +uniform sampler2D screenTexture; +uniform vec3 screenSize; +uniform bool screenBurn; + +void main() +{ + vec3 col = texture(screenTexture, TexCoords).rgb; + float scanLine = mod(gl_FragCoord.y, 2.0) * 0.25; + vec3 scanColor = col.rgb - scanLine; + + if (col.r < 0.1f && col.g < 0.1f && col.b < 0.1f) { + if (screenBurn) { + float dist = (1.0 - distance(vec2(gl_FragCoord.x / screenSize.x, gl_FragCoord.y / screenSize.y), vec2(0.5,0.5))) * 0.2; + FragColor = vec4(0.0, dist, dist, 1.0); + } else { + FragColor = vec4(0.0, 0.0, 0.0, 1.0); + } + } else { + FragColor = vec4(scanColor, 1.0); + } +} \ No newline at end of file diff --git a/resources/scanlines.vs b/resources/scanlines.vs new file mode 100644 index 0000000..f35dcae --- /dev/null +++ b/resources/scanlines.vs @@ -0,0 +1,11 @@ +#version 330 core +layout (location = 0) in vec2 aPos; +layout (location = 1) in vec2 aTexCoords; + +out vec2 TexCoords; + +void main() +{ + TexCoords = aTexCoords; + gl_Position = vec4(aPos.x, aPos.y, 0.0, 1.0); +} diff --git a/resources/terminal8x8.jpg b/resources/terminal8x8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13e393d8f31c1dea0674987532fde36da029da7f GIT binary patch literal 44266 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

KnbNI|{?TE>Q&PI&wJ1 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 + draw_map(&map, ctx); + + let positions = self.ecs.read_storage::(); + let renderables = self.ecs.read_storage::(); + + for (pos, render) in (&positions, &renderables).join() { + ctx.set(pos.x, pos.y, render.fg, render.bg, render.glyph); + } + } +} + +struct LeftWalker {} +impl<'a> System<'a> for LeftWalker { + type SystemData = (ReadStorage<'a, LeftMover>, WriteStorage<'a, Position>); + fn run(&mut self, (lefty, mut pos): Self::SystemData) { + for (_lefty, mut pos) in (&lefty, &mut pos).join() { + pos.x -= 1; + if pos.x < 0 { + pos.x = 79; + } + } + } +} +#[derive(Component, Debug)] +struct Player {} + +#[derive(Component)] +struct LeftMover {} + +#[derive(Component)] +struct Position { + x: i32, + y: i32, +} + +#[derive(Component)] +struct Renderable { + glyph: u8, + fg: RGB, + bg: RGB, +} + +#[derive(PartialEq, Copy, Clone)] +enum TileType { + Wall, + Floor, +} + +impl State { + fn run_systems(&mut self) { + let mut lw = LeftWalker {}; + lw.run_now(&self.ecs); + self.ecs.maintain(); + } +} + +fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World) { + let mut positions = ecs.write_storage::(); + let mut players = ecs.write_storage::(); + let map = ecs.fetch::>(); + + for (_player, mut pos) in (&mut players, &mut positions).join() { + let destination_idx = xy_idx(pos.x + delta_x, pos.y + delta_y); + if map[destination_idx] != TileType::Wall { + pos.x = min(79, max(0, pos.x + delta_x)); + pos.y = min(49, max(0, pos.y + delta_y)); + } + } +} + +fn player_input(gs: &mut State, ctx: &mut Rltk) { + // Player movement + match ctx.key { + None => {} // nothing happened + Some(key) => match key { + VirtualKeyCode::Left => try_move_player(-1, 0, &mut gs.ecs), + VirtualKeyCode::Right => try_move_player(1, 0, &mut gs.ecs), + VirtualKeyCode::Up => try_move_player(0, -1, &mut gs.ecs), + VirtualKeyCode::Down => try_move_player(0, 1, &mut gs.ecs), + _ => {} + }, + } +} + +pub fn xy_idx(x: i32, y: i32) -> usize { + (y as usize * 80) + x as usize +} + +fn new_map() -> Vec { + let mut map = vec![TileType::Floor; 80 * 50]; + + // Make the boundary walls + for x in 0..80 { + map[xy_idx(x, 0)] = TileType::Wall; + map[xy_idx(x, 49)] = TileType::Wall; + } + for y in 0..50 { + map[xy_idx(0, y)] = TileType::Wall; + map[xy_idx(79, y)] = TileType::Wall; + } + + // now, randomly splat bunch of walls + // Obtain thread local RNG: + + let mut rng = rltk::RandomNumberGenerator::new(); + for _i in 0..400 { + let x = rng.roll_dice(1, 79); + let y = rng.roll_dice(1, 49); + let idx = xy_idx(x, y); + if idx != xy_idx(40, 25) { + map[idx] = TileType::Wall; + } + } + + map +} + +fn draw_map(map: &[TileType], ctx: &mut Rltk) { + let mut y = 0; + let mut x = 0; + for tile in map.iter() { + match tile { + TileType::Floor => { + ctx.set( + x, + y, + RGB::from_f32(0.5, 0.5, 0.5), + RGB::from_f32(0., 0., 0.), + rltk::to_cp437('.'), + ); + } + TileType::Wall => { + ctx.set( + x, + y, + RGB::from_f32(0.0, 1.0, 0.0), + RGB::from_f32(0., 0., 0.), + rltk::to_cp437('#'), + ); + } + } + x += 1; + if (x > 79) { + x = 0; + y += 1; + } + } +} + +fn main() { + let context = Rltk::init_simple8x8(80, 50, "Hello Rust World", "resources"); + let mut gs = State { ecs: World::new() }; + gs.ecs.register::(); + gs.ecs.register::(); + gs.ecs.register::(); + gs.ecs.register::(); + + gs.ecs + .create_entity() + .with(Position { x: 40, y: 25 }) + .with(Renderable { + glyph: rltk::to_cp437('@'), + fg: RGB::named(rltk::YELLOW), + bg: RGB::named(rltk::BLACK), + }) + .with(Player {}) + .build(); + + for i in 0..10 { + gs.ecs + .create_entity() + .with(Position { x: i * 7, y: 20 }) + .with(Renderable { + glyph: rltk::to_cp437('☺'), + fg: RGB::named(rltk::RED), + bg: RGB::named(rltk::BLACK), + }) + .with(LeftMover {}) + .build(); + } + + gs.ecs.insert(new_map()); + + rltk::main_loop(context, gs); +}