diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..fac71227c9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +/target +/web-target \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..91822b69e1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# EditorConfig file: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = false +insert_final_newline = false + +[*.ts] +indent_size = 2 + +[*.yaml] +indent_size = 2 + +[*.yml] +indent_size = 2 \ No newline at end of file diff --git a/.github/workflows/build-matchmaker.yml b/.github/workflows/build-matchmaker.yml new file mode 100644 index 0000000000..6d1188e741 --- /dev/null +++ b/.github/workflows/build-matchmaker.yml @@ -0,0 +1,67 @@ +# +# Builds the matchmaking server docker image +# +name: Build & Publish Matchmaker Docker Image + +on: + push: + branches: + - main + tags: + - "v*" + +env: + RELEASE_VERSION: ${{ github.ref_name }} + +jobs: + build-and-publish: + name: Build and Publish Container + runs-on: ubuntu-latest + env: + DEPLOY_HOOK: ${{ secrets.DEPLOY_HOOK }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + # list of Docker images to use as base name for tags + images: | + ghcr.io/${{ github.repository }}-matchmaker + + # generate Docker tags based on the following events/attributes + tags: | + type=schedule + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Re-deploy Container + run: | + $DEPLOY_HOOK \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2770e1474..7a4516d172 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,94 +1,70 @@ -name: Continuous integration +name: CI on: push: branches: - - main - paths-ignore: - - "**.md" - - "**.json" + - master + - staging + - trying pull_request: - paths-ignore: - - "**.md" - - "**.json" jobs: - fmt: + check_formatting: runs-on: ubuntu-latest - name: Formatting + name: Check Rust formatting steps: - - uses: actions/checkout@v2 - - name: Check Rust formatting - uses: actions-rs/cargo@v1 + - uses: actions/checkout@v3 + - name: Install Rustfmt + uses: actions-rs/toolchain@v1 + with: + components: rustfmt + - uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check - clippy: + clippy_correctness_checks: runs-on: ubuntu-latest - name: Linting - steps: - - uses: actions/checkout@v2 - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install \ - --allow-unauthenticated -y -qq \ - libasound2-dev \ - libgl1-mesa-dev \ - libx11-dev \ - libxi-dev \ - libudev-dev - - name: Install Clippy - run: rustup component add clippy - - - name: Run Clippy - run: cargo clippy -- -W clippy::correctness -D warnings - - build: - name: Build - runs-on: ${{ matrix.config.os }} + name: Clippy correctness checks strategy: fail-fast: false matrix: config: - - { os: ubuntu-latest, target: "x86_64-unknown-linux-gnu" } - - { os: macos-latest, target: "x86_64-apple-darwin" } - - { os: macos-latest, target: "aarch64-apple-darwin" } - - { os: windows-latest, target: "x86_64-pc-windows-msvc" } - - { os: windows-latest, target: "i686-pc-windows-msvc" } - profile: ["--release"] - + - { target: 'x86_64-unknown-linux-gnu', target_dir: 'target' } + # Disable WASM Target until we fix WASM compile + # - { target: 'wasm32-unknown-unknown', target_dir: 'web-target' } steps: - - name: Checkout - uses: actions/checkout@v2 - name: Install dependencies - if: matrix.config.os == 'ubuntu-latest' run: | sudo apt-get update - sudo apt-get install \ - --allow-unauthenticated -y -qq \ + sudo apt-get install -y -q \ libasound2-dev \ - libgl1-mesa-dev \ - libx11-dev \ - libxi-dev \ libudev-dev - - name: Cache Cargo dependencies - uses: actions/cache@v2 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }} - - name: Setup Rust + - uses: actions/checkout@v3 + - name: Install WASM Target + if: matrix.config.target == 'wasm32-unknown-unknown' uses: actions-rs/toolchain@v1 with: - toolchain: stable - override: true - profile: minimal target: ${{ matrix.config.target }} + components: clippy + - name: Install Clippy + if: matrix.config.target != 'wasm32-unknown-unknown' + uses: actions-rs/toolchain@v1 + with: + components: clippy + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + web-target/ + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/cargo@v1 + env: + CARGO_TARGET_DIR: ${{ matrix.config.target_dir }} with: - command: build - args: --locked --target ${{ matrix.config.target }} ${{ matrix.profile }} + command: clippy + args: --target ${{ matrix.config.target }} -- -W clippy::correctness -D warnings diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 18ec30a368..2675dd61f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,11 +1,14 @@ -# This action will generate Windows|Linux|MacOS binary releases - -name: Release +name: CD on: push: + branches: + - main tags: - - "v*" + - 'v*' + +env: + RELEASE_VERSION: ${{ github.ref_name }} jobs: build_release: @@ -16,38 +19,31 @@ jobs: fail-fast: false matrix: config: - - { os: ubuntu-latest, target: "x86_64-unknown-linux-gnu" } - - { os: macos-latest, target: "x86_64-apple-darwin" } - - { os: macos-latest, target: "aarch64-apple-darwin" } - - { os: windows-latest, target: "x86_64-pc-windows-msvc" } - - { os: windows-latest, target: "i686-pc-windows-msvc" } + - { os: ubuntu-latest, target: 'x86_64-unknown-linux-gnu' } + - { os: macos-latest, target: 'x86_64-apple-darwin' } + - { os: macos-latest, target: 'aarch64-apple-darwin' } + - { os: windows-latest, target: 'x86_64-pc-windows-msvc' } steps: - name: Checkout - uses: actions/checkout@v2 - - - name: Set the release version - shell: bash - run: echo "RELEASE_VERSION=${GITHUB_REF:10}" >> $GITHUB_ENV + uses: actions/checkout@v3 - name: Install dependencies if: matrix.config.os == 'ubuntu-latest' run: | sudo apt-get update - sudo apt-get install \ - --allow-unauthenticated -y -qq \ + sudo apt-get install -y -q \ libasound2-dev \ - libgl1-mesa-dev \ - libx11-dev \ - libxi-dev \ libudev-dev - - name: Cache Cargo - uses: actions/cache@v2 + - uses: actions/cache@v3 with: path: | - ~/.cargo/registry - ~/.cargo/git + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Setup Rust @@ -60,9 +56,6 @@ jobs: - name: Build uses: actions-rs/cargo@v1 - env: - SDKROOT: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk - RUSTFLAGS: -L /usr/lib/x86_64-linux-gnu with: command: build args: --release --locked --target ${{ matrix.config.target }} @@ -76,10 +69,8 @@ jobs: echo "ARTIFACT_PATH=$artifact_path" >> $GITHUB_ENV mkdir $release_dir cp target/${{ matrix.config.target }}/release/jumpy.exe $release_dir/ - strip $release_dir/jumpy.exe - find assets -name "*.schema.json" -exec rm -f {} \; - cp -R assets/ mods/ licenses/ $release_dir/ - cp LICENSE $release_dir/licenses/ + cp -R assets/ $release_dir/ + cp LICENSE $release_dir/ 7z a -tzip $artifact_path $release_dir/ - name: Prepare artifacts [Unix] @@ -91,10 +82,8 @@ jobs: echo "ARTIFACT_PATH=$artifact_path" >> $GITHUB_ENV mkdir $release_dir cp target/${{ matrix.config.target }}/release/jumpy $release_dir/ - strip $release_dir/jumpy || true - find assets -name "*.schema.json" -exec rm -f {} \; - cp -R assets mods licenses $release_dir - cp LICENSE $release_dir/licenses + cp -R assets $release_dir + cp LICENSE $release_dir tar -czvf $artifact_path $release_dir/ - name: Deploy | Upload artifacts @@ -111,14 +100,20 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Download Artifacts uses: actions/download-artifact@v2 - - name: Set the release version + - name: Set stable release name + shell: bash + if: env.release_VERSION != 'main' + run: echo "RELEASE_NAME=Jumpy ${GITHUB_REF:10}" >> $GITHUB_ENV + + - name: Set pre-release name shell: bash - run: echo "RELEASE_VERSION=${GITHUB_REF:10}" >> $GITHUB_ENV + if: env.release_VERSION == 'main' + run: echo "RELEASE_NAME=Jumpy Dev Snapshot" >> $GITHUB_ENV - name: Generate Checksums run: for file in jumpy-*/jumpy-*; do openssl dgst -sha256 -r "$file" | awk '{print $1}' > "${file}.sha256"; done @@ -130,6 +125,7 @@ jobs: file: jumpy-*/jumpy-* file_glob: true overwrite: true - body: "Fish Folk: Jumpy ${{ env.RELEASE_VERSION }} 🐟" + prerelease: ${{ env.RELEASE_VERSION == 'main' }} + body: '${{ env.RELEASE_NAME }}' tag: ${{ github.ref }} - repo_token: ${{ secrets.GITHUB_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml deleted file mode 100644 index 6a33f44e20..0000000000 --- a/.github/workflows/validation.yml +++ /dev/null @@ -1,26 +0,0 @@ -on: - push: - branches: - - main - paths: - - "**.json" - pull_request: - paths: - - "**.json" - -name: Format validation check - -jobs: - json-validation: - runs-on: ubuntu-latest - name: Validate JSON files - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - name: Install ajv-cli - run: npm install -g ajv-cli - - - name: Validate files - shell: bash - run: ./scripts/validate_json.sh diff --git a/.github/workflows/web-demo.yml b/.github/workflows/web-demo.yml new file mode 100644 index 0000000000..bf01f17e38 --- /dev/null +++ b/.github/workflows/web-demo.yml @@ -0,0 +1,67 @@ +name: Publish Web Demo + +on: + - workflow_dispatch + # Disable temporarily while web build is broken + # + # push: + # tags: + # - "v*" + # branches: + # - bevy-rewrite + # - main + +jobs: + publish-web-demo: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Install Just ⚙️ + run: curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | sudo bash -s -- --to /usr/local/bin + + - name: Cargo Registry Cache + uses: actions/cache@v2 + with: + path: | + ~/.cargo/registry/index + ~/.cargo/registry/cache + ~/.cargo/git/db + key: cargo-registry + + - name: Rust Toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: wasm32-unknown-unknown + override: true + + - uses: jetli/wasm-bindgen-action@v0.1.0 + with: + version: "0.2.83" + + - name: Build WASM Release 🔨 + run: just build-release-web + + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@4.1.3 + with: + branch: gh-pages + folder: web-target/wasm-release + target-folder: player/${{ github.ref_name }} + ssh-key: ${{ secrets.MASTER_GH_PAGES_DEPLOY_KEY }} + + # - name: Symlink Latest Build + # run: | + # mkdir latest-symlink-dir + # ln -s ./${{ github.ref_name }} latest + # mv latest latest-symlink-dir + + # - name: Deploy Symlinked Latest Build 🚀 + # uses: JamesIves/github-pages-deploy-action@4.1.3 + # with: + # branch: gh-pages + # folder: latest-symlink-dir + # clean: false + # target-folder: player + # ssh-key: ${{ secrets.MASTER_GH_PAGES_DEPLOY_KEY }} diff --git a/.gitignore b/.gitignore index 02718a78e9..5487562ee7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ /web /target -Cargo.toml +/web-target src/.DS_Store .DS_Store /.idea/ book/book -.vscode +.vscode \ No newline at end of file diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md deleted file mode 100644 index fdb6321d1d..0000000000 --- a/ARCHITECTURE.md +++ /dev/null @@ -1,19 +0,0 @@ -# Project Architecture - -This project use [Macroquad](https://github.com/not-fl3/macroquad) for rendering and context handling and -[Hecs](https://github.com/Ralith/hecs) as its ECS. The game loop is also handled using Macroquad, with a `Node` -implementation (`crate::game::Game`) that calls the various systems in the appropriate frame phase. - -Modules should separate code by context, and we keep both component types and system function implementations -together, separated by concern, based on this context. - -The overarching design philosophy, on a code level, will be to keep to the ECS paradigm. Meaning that we implement -logic in systems and keep component types as pure data types. The exception is in cases where manipulating -data on a component depends on several steps and this manipulation happens in more than one step, making a setter -type method on the component type to avoid code duplication. - -Types will often have companion types with a `Metadata` suffix, which are the types used to serialize and -deserialize the type to json. - -There is also the `assets` folder, which contains all assets, both containing data files and the game's graphics. -Every asset type is usually accompanied by a data file, where the assets are declared for dynamic loading. \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 7822317f82..9f3a9798bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,38 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "ab_glyph" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04a9283dace1c41c265496614998d5b9c4a97b3eb770e804f007c5144bf03f2b" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330223a1aecc308757b9926e9391c9b47f8ef2dbd8aea9df88312aea18c5e8d6" + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "adler32" version = "1.2.0" @@ -10,851 +42,5662 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.4.7" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] [[package]] name = "ahash" -version = "0.7.6" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "57e6e951cfbb2db8de1828d49073a113a29fd7117b1596caa781a258c7e38d72" dependencies = [ + "cfg-if 1.0.0", "getrandom", "once_cell", "version_check", ] [[package]] -name = "async-trait" -version = "0.1.56" +name = "aho-corasick" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" dependencies = [ - "proc-macro2", - "quote", - "syn", + "memchr", ] [[package]] -name = "audir-sles" -version = "0.1.0" +name = "alsa" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea47348666a8edb7ad80cbee3940eb2bccf70df0e6ce09009abe1a836cb779f5" +checksum = "5915f52fe2cf65e83924d037b6c5290b7cee097c6b5c8700746e6168a343fd6b" +dependencies = [ + "alsa-sys", + "bitflags", + "libc", + "nix 0.23.1", +] [[package]] -name = "audrey" -version = "0.3.0" +name = "alsa-sys" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58b92a84e89497e3cd25d3672cd5d1c288abaac02c18ff21283f17d118b889b8" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" dependencies = [ - "dasp_frame", - "dasp_sample", - "hound", - "lewton", + "libc", + "pkg-config", ] [[package]] -name = "autocfg" -version = "1.1.0" +name = "android_log-sys" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" [[package]] -name = "bitflags" -version = "1.3.2" +name = "android_logger" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "d9ed09b18365ed295d722d0b5ed59c01b79a826ff2d2a8f73d5ecca8e6fb2f66" +dependencies = [ + "android_log-sys", + "env_logger", + "lazy_static", + "log", +] [[package]] -name = "bumpalo" -version = "3.10.0" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] [[package]] -name = "bytemuck" -version = "1.9.1" +name = "anyhow" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] -name = "byteorder" -version = "1.4.3" +name = "approx" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] [[package]] -name = "cc" -version = "1.0.73" +name = "arboard" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "dc120354d1b5ec6d7aaf4876b602def75595937b5e15d356eb554ab5177e08bb" +dependencies = [ + "clipboard-win", + "core-graphics 0.22.3", + "image 0.23.14", + "log", + "objc", + "objc-foundation", + "objc_id", + "parking_lot 0.12.1", + "thiserror", + "winapi", + "x11rb", +] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "arrayvec" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] -name = "color_quant" -version = "1.1.0" +name = "arrayvec" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] -name = "core-foundation" -version = "0.9.3" +name = "ash" +version = "0.37.0+1.3.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "006ca68e0f2b03f22d6fa9f2860f85aed430d257fec20f8879b2145e7c7ae1a6" dependencies = [ - "core-foundation-sys", - "libc", + "libloading", ] [[package]] -name = "core-foundation-sys" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" - -[[package]] -name = "crc32fast" -version = "1.3.2" +name = "ast_node" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "cf94863c5fdfee166d0907c44e5fee970123b2b7307046d35d1e671aa93afbba" dependencies = [ - "cfg-if", + "darling", + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn", ] [[package]] -name = "dasp_frame" -version = "0.11.0" +name = "async-channel" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a3937f5fe2135702897535c8d4a5553f8b116f76c1529088797f2eee7c5cd6" +checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" dependencies = [ - "dasp_sample", + "concurrent-queue", + "event-listener", + "futures-core", ] [[package]] -name = "dasp_sample" -version = "0.11.0" +name = "async-executor" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] [[package]] -name = "deflate" -version = "0.8.6" +name = "async-io" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" dependencies = [ - "adler32", - "byteorder", + "autocfg", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "winapi", ] [[package]] -name = "ff-particles" -version = "0.1.2" +name = "async-task" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456005c433b73c5268369b27894cd5fa94a0abb3e0489540152383849f1045c0" -dependencies = [ - "macroquad", - "serde", -] +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" [[package]] -name = "fishsticks" -version = "0.2.3" -source = "git+https://github.com/fishfolks/fishsticks#25bd7676c85064ad976c449317f30b623f5e7515" -dependencies = [ - "cfg-if", - "gilrs", -] +name = "atomic-arena" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5450eca8ce5abcfd5520727e975ebab30ccca96030550406b0ca718b224ead10" [[package]] -name = "fnv" -version = "1.0.7" +name = "atomic-waker" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" [[package]] -name = "fontdue" -version = "0.5.2" +name = "atomic_refcell" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75712fff1702bac51b7eaa5a5ca9f9853b8055ef5906088a32f4fe196595a1d" -dependencies = [ - "hashbrown 0.9.1", - "ttf-parser", -] +checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" [[package]] -name = "getrandom" -version = "0.2.7" +name = "atty" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "cfg-if", - "js-sys", + "hermit-abi", "libc", - "wasi", - "wasm-bindgen", + "winapi", ] [[package]] -name = "gilrs" -version = "0.9.0" +name = "autocfg" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ba7c37bf8ea7ba0c3e3795dfa1a7771b1e47c4bb417c4d27c7b338d79685f" -dependencies = [ - "fnv", - "gilrs-core", - "log", - "uuid", - "vec_map", -] +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "gilrs-core" -version = "0.4.1" +name = "base64" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a8d94a7fc5afd27e894e08a4cfe5a49237f85bcc7140e90721bad3399c7d02" -dependencies = [ - "core-foundation", - "io-kit-sys", - "js-sys", - "libc", - "libudev-sys", - "log", - "nix", - "rusty-xinput", - "uuid", - "vec_map", - "wasm-bindgen", - "web-sys", - "winapi", -] +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" [[package]] -name = "glam" -version = "0.14.0" +name = "base64" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "333928d5eb103c5d4050533cec0384302db6be8ef7d3cebd30ec6a35350353da" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] -name = "hashbrown" -version = "0.9.1" +name = "better_scoped_tls" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "b73e8ecdec39e98aa3b19e8cd0b8ed8f77ccb86a6b0b2dc7cd86d105438a2123" dependencies = [ - "ahash 0.4.7", + "scoped-tls", ] [[package]] -name = "hashbrown" -version = "0.12.1" +name = "bevy" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" +checksum = "fea147ef1ebb92d41294cfad804c40de151b174c711ce6e0a4a40eba23eae1a4" dependencies = [ - "ahash 0.7.6", + "bevy_internal", ] [[package]] -name = "hecs" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ae6c6368add4cc6592ed9b48a270b35cf3a52d429355aaeb55822935526e94" +name = "bevy-has-load-progress" +version = "0.1.0" dependencies = [ - "hashbrown 0.12.1", - "spin", + "bevy", + "bevy-has-load-progress-macros", + "bevy_egui", ] [[package]] -name = "hound" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a164bb2ceaeff4f42542bdb847c41517c78a60f5649671b2a07312b6e117549" +name = "bevy-has-load-progress-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] -name = "image" -version = "0.23.14" +name = "bevy-inspector-egui" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +checksum = "3e18f673a7040930e20c899ad5e98d62f5db702a742c9cd96b5862d051a7b5da" dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "num-iter", - "num-rational", - "num-traits", - "png", + "bevy", + "bevy-inspector-egui-derive", + "bevy_egui", + "image 0.23.14", + "pretty-type-name", ] [[package]] -name = "io-kit-sys" -version = "0.2.0" +name = "bevy-inspector-egui-derive" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7789f7f3c9686f96164f5109d69152de759e76e284f736bd57661c6df5091919" +checksum = "2ce0a659fdb2c31c2ae7f2ee8020fa758aff458a4ae4dc4e55bc27dcc31ef487" dependencies = [ - "core-foundation-sys", - "mach", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "itoa" -version = "1.0.2" +name = "bevy-parallax" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "848290b802a0315343b65eba37dc258194689b5df40fbd808aa2dec75bf812a3" +dependencies = [ + "bevy", + "serde", +] [[package]] -name = "js-sys" -version = "0.3.58" +name = "bevy_app" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" +checksum = "9e4ae0a6ed2adf3b153511b4645241660a93f747c05ecd1e5a909dafc803cad4" dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", "wasm-bindgen", + "web-sys", ] [[package]] -name = "jumpy" -version = "0.4.3" +name = "bevy_asset" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec773c861a7e9d9978771f59f385500ec6da3a1ab5487705cddb054393d3d19" dependencies = [ - "ff-particles", - "fishsticks", - "hecs", - "jumpy-core", - "macroquad", - "macroquad-platformer", + "anyhow", + "bevy_app", + "bevy_diagnostic", + "bevy_ecs", + "bevy_log", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "crossbeam-channel", + "downcast-rs", + "fastrand", + "js-sys", + "ndk-glue 0.5.2", + "notify", + "parking_lot 0.12.1", "serde", - "serde_json", + "thiserror", "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] -name = "jumpy-core" -version = "0.4.3" +name = "bevy_core" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53172003d5cde7780870b5403c66c8ede3581faf3e510e916d8b4baa5b538d2" dependencies = [ - "async-trait", - "fishsticks", - "getrandom", - "hecs", - "macroquad", - "serde", - "serde_json", - "toml", - "wasm-bindgen", + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bytemuck", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "bevy_core_pipeline" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "5e60efd10d593f6d122f2687f74c09ad55835a8f999c35bed6380ddd8e6ff7f2" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "radsort", + "serde", +] [[package]] -name = "lewton" -version = "0.9.4" +name = "bevy_derive" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d542c1a317036c45c2aa1cf10cc9d403ca91eb2d333ef1a4917e5cb10628bd0" +checksum = "0e6345431bbe6d7b6c165cd860ecd0b35da929779571259c5df970ac256d45f9" dependencies = [ - "byteorder", - "ogg", - "smallvec", + "bevy_macro_utils", + "quote", + "syn", ] [[package]] -name = "libc" -version = "0.2.126" +name = "bevy_diagnostic" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "58ac9f4c2815f412be4b6e21e4b299cdafa710f651d064f6d40b2a8377a0d17c" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_log", + "bevy_time", + "bevy_utils", +] [[package]] -name = "libudev-sys" -version = "0.1.4" +name = "bevy_ecs" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +checksum = "c174066a24ed8a14d15ea58b0aea1c1f5c763f4bb36ebdc2b1dc78026007d0f5" dependencies = [ - "libc", - "pkg-config", + "async-channel", + "bevy_ecs_macros", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "downcast-rs", + "fixedbitset", + "fxhash", + "serde", + "thread_local", ] [[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +name = "bevy_ecs_dynamic" +version = "0.1.0" +source = "git+https://github.com/jakobhellermann/bevy_ecs_dynamic#aa7a051a49bd134cfd8c169542e16526bf2b36b3" dependencies = [ - "cfg-if", + "bevy_ecs", + "bevy_reflect", + "fixedbitset", ] [[package]] -name = "mach" -version = "0.3.2" +name = "bevy_ecs_macros" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +checksum = "cc50c39e49e8febccc74e8e731680adb0cb4aef1f53275740cbaa95c6da71f4f" dependencies = [ - "libc", + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "macroquad" -version = "0.3.16" +name = "bevy_ecs_tilemap" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b723ade71357d07177c769af9ae42beff73c854e827ee5a4ec765dd2beb95e1" +checksum = "5ef56c77808aa1fc7379ce538bd9a1e4048794203b4f591f2d06131fc613a1cc" dependencies = [ - "bumpalo", - "fontdue", - "glam", - "image", - "macroquad_macro", - "miniquad", - "quad-rand", - "quad-snd", + "bevy", + "log", + "regex", ] [[package]] -name = "macroquad-platformer" -version = "0.1.3" +name = "bevy_egui" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927301bceb8c2781043a18611304b7b0a9d034b402321d4e099ef01c58ac0793" +checksum = "d365761fd6a5c227b1f88f38b560287334accb69cfe938443e27615464edc897" dependencies = [ - "macroquad", + "arboard", + "bevy", + "egui", + "thread_local", + "webbrowser", ] [[package]] -name = "macroquad_macro" -version = "0.1.7" +name = "bevy_encase_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68bc194009c5e9b97da64a08142dd183c264885d99c985cf849868103018adf1" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_fluent" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97073140587e1d731a583695c64b3a4410ba5edf9b3f79aae56ab63d0aab0384" +dependencies = [ + "anyhow", + "bevy", + "fluent", + "fluent-langneg", + "globset", + "indexmap", + "intl-memoizer", + "ron", + "serde", + "serde_yaml", + "thiserror", + "tracing", + "unic-langid", + "uuid", +] + +[[package]] +name = "bevy_gilrs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb15a3427d9707be92b457e5d66900b02d853b475c21dd8662bdda387ba9f24e" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_utils", + "gilrs", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb1ec76099ea5a716de08ea42ff41f036ebe2502df1d569168b58f16458a85e" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "smallvec", +] + +[[package]] +name = "bevy_input" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1821c4b760ba6ddb4fe61806e9cc33f40b09a884557aca4553a29b8c7d73c6b4" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", + "serde", +] + +[[package]] +name = "bevy_internal" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee63ad1e3f95a26ff2c227fadb1534a7bfe3a098e0e45c347f2f2575a573d9bc" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_gilrs", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_ptr", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_tasks", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_window", + "bevy_winit", + "ndk-glue 0.5.2", +] + +[[package]] +name = "bevy_kira_audio" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0379febb94c497ac6f6b5c0ef27775f7302f65dc780a33dbcec0c743a474b5f4" +dependencies = [ + "anyhow", + "bevy", + "kira", + "parking_lot 0.12.1", + "thiserror", +] + +[[package]] +name = "bevy_log" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "092daf498887814a064331dfcd1cf487a5ddab01fd38629b84a35b8b664462a1" +dependencies = [ + "android_log-sys", + "bevy_app", + "bevy_utils", + "console_error_panic_hook", + "tracing-log", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43fb5137e5198302d7c6c33d1e454cf48a586e7c6fd12f4860f12863951e16b9" +dependencies = [ + "quote", + "syn", + "toml", +] + +[[package]] +name = "bevy_math" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531f2b90c7e861a96f418b3d560131b3354c5e67a67eba3953a45a56ea0114d2" +dependencies = [ + "glam", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941e7d3d4e1dbb735f040e4cdc1558be1d3c38d43f1d9fdbb039c39a7849a00b" +dependencies = [ + "glam", +] + +[[package]] +name = "bevy_mod_js_scripting" +version = "0.1.0" +source = "git+https://github.com/zicklag/bevy_mod_js_scripting.git?branch=jumpy#c86212a29be7475b0c2b1ffeaa60d13b0f6f2706" +dependencies = [ + "anyhow", + "bevy", + "bevy_ecs_dynamic", + "bevy_reflect", + "bevy_reflect_fns", + "deno_core", + "fixedbitset", + "js-sys", + "pollster", + "serde", + "serde-wasm-bindgen", + "serde_json", + "slotmap", + "swc_atoms", + "swc_common", + "swc_ecma_codegen", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_typescript", + "swc_ecma_visit", + "type-map 0.5.0", + "wasm-bindgen", + "wasm_mutex", +] + +[[package]] +name = "bevy_pbr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176073021a4caeb8b448f24ce790fb57fde74b114f345064a8b102d2f7bed905" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags", + "bytemuck", + "radsort", +] + +[[package]] +name = "bevy_prototype_lyon" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9e44f5ffcbac7114ed9377e6bc875e845c76e5ebb3a5a018169dc37ba5b78d0" +dependencies = [ + "bevy", + "lyon_tessellation", + "svgtypes", +] + +[[package]] +name = "bevy_ptr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9960c19e582b43cebe1894b6679520a4f50802d1cc5b6fa432f8d685ed232f09" + +[[package]] +name = "bevy_reflect" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc689dd7a7df3b3768884a4754711d406aa302ea48da483c03b52715fa95045" +dependencies = [ + "bevy_ptr", + "bevy_reflect_derive", + "bevy_utils", + "downcast-rs", + "erased-serde", + "glam", + "once_cell", + "parking_lot 0.12.1", + "serde", + "smallvec", + "thiserror", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c36fa5100832c787c10558d31632ddc454c221e8dfacbbef836938f59614754" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_reflect_fns" +version = "0.1.0" +source = "git+https://github.com/jakobhellermann/bevy_reflect_fns#22e85021851e0cfe27b87e428f6313dd8c26abde" +dependencies = [ + "bevy_reflect", + "thiserror", +] + +[[package]] +name = "bevy_render" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "600bcef85c7efac6e38ed725707f0e5b7c59b510430034ba2f743f472493f845" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_encase_derive", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_mikktspace", + "bevy_reflect", + "bevy_render_macros", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags", + "codespan-reporting", + "copyless", + "downcast-rs", + "encase", + "futures-lite", + "hex", + "hexasphere", + "image 0.24.4", + "naga", + "once_cell", + "parking_lot 0.12.1", + "regex", + "serde", + "smallvec", + "thiserror", + "thread_local", + "wgpu", +] + +[[package]] +name = "bevy_render_macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be90adc9e5d5808833e363670818da5fe68ccafd7ca983a457f90957d2a430b" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_sprite" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69c419f3db09d7ac1f4d45e0874d349d5d6f47f48bc10d55cd0da36413e2331e" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bitflags", + "bytemuck", + "copyless", + "fixedbitset", + "guillotiere", + "rectangle-pack", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b753acb3d5b9dbfd77038560fe1893c17d4ee0a4242c2ee70da9d59430537" +dependencies = [ + "async-channel", + "async-executor", + "event-listener", + "futures-lite", + "num_cpus", + "once_cell", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c265b7515faf55a3b92fd6ce0ab65dd246f247e11d737d6f5cdaf49c2be42c63" +dependencies = [ + "ab_glyph", + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", + "bevy_window", + "glyph_brush_layout", + "serde", + "thiserror", +] + +[[package]] +name = "bevy_time" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22830665b8476292b861216383fd79922aef2b540f9fd09d49144e3e5e94550e" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "crossbeam-channel", +] + +[[package]] +name = "bevy_transform" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4bb8760f03e9667e7499a5ceec1f7630fc3e45702781ac0df56cb969e8ae668" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", +] + +[[package]] +name = "bevy_tweening" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "164bcb41708fa1aeb435b6bba6cae61777b9f8cf3e18b207bb6209ca5b970e77" +dependencies = [ + "bevy", + "interpolation", +] + +[[package]] +name = "bevy_ui" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "062ce086de1a4a470e5df48cb5c16a1dc97ab610e635cafabdef26c4a1ef5756" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bytemuck", + "serde", + "smallvec", + "taffy", +] + +[[package]] +name = "bevy_utils" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e9aa1866c1cf7ee000f281ce9e90d02d701f5c7380a107252017e58e2f5246" +dependencies = [ + "ahash 0.7.6", + "getrandom", + "hashbrown", + "instant", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_window" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707dbbebfac72b1e63e874e7a11a345feab8c440355c0bd71e6dff26709fba9a" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_utils", + "raw-window-handle", + "web-sys", +] + +[[package]] +name = "bevy_winit" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98b15fee4b75472e3441b0c7221467303e4ce59b342a94a328e447e7cdb5a43c" +dependencies = [ + "approx", + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_utils", + "bevy_window", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "memchr", +] + +[[package]] +name = "bumpalo" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" + +[[package]] +name = "bytemuck" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9e1f5fa78f69496407a27ae9ed989e3c3b072310286f5ef385525e4cbc24a9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "clang-sys" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335867764ed2de42325fafe6d18b8af74ba97ee0c590fa016f157535b42ab04b" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "once_cell", + "strsim", + "termcolor", +] + +[[package]] +name = "clap_derive" +version = "4.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16a1b0f6422af32d5da0c58e2703320f379216ee70198241c84173a8c5ac28f3" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clipboard-win" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4ab1b92798304eedc095b53942963240037c0516452cb11aeba709d420b2219" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + +[[package]] +name = "cocoa" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen", +] + +[[package]] +name = "const_panic" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed2b28323eee4fb66bb824401daa3e46bd445b9a9298a3d382b320710ba69dd" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "copyless" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys 0.8.3", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11894b20ebfe1ff903cbdc52259693389eea03b94918a2def2c30c3bf227ad88" +dependencies = [ + "bitflags", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dff444d80630d7073077d38d40b4501fd518bd2b922c2a55edcc8b0f7be57e6" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74117836a5124f3629e4b474eed03e479abaf98988b4bb317e29f08cfe0e4116" +dependencies = [ + "alsa", + "core-foundation-sys 0.8.3", + "coreaudio-rs", + "jni", + "js-sys", + "lazy_static", + "libc", + "mach", + "ndk 0.6.0", + "ndk-glue 0.6.2", + "nix 0.23.1", + "oboe", + "parking_lot 0.11.2", + "stdweb", + "thiserror", + "wasm-bindgen", + "web-sys", + "winapi", +] + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cstr_core" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd98742e4fdca832d40cab219dc2e3048de17d873248f83f17df47c1bea70956" +dependencies = [ + "cty", + "memchr", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "d3d12" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759" +dependencies = [ + "bitflags", + "libloading", + "winapi", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "dashmap" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +dependencies = [ + "cfg-if 1.0.0", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core 0.9.3", +] + +[[package]] +name = "debug_unreachable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a032eac705ca39214d169f83e3d3da290af06d8d1d344d1baad2fd002dca4b3" +dependencies = [ + "unreachable", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "deno_core" +version = "0.146.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88475da37fe0544b7372fd4705560df496498eb5eeb40ce19bfe7787ed0600ca" +dependencies = [ + "anyhow", + "deno_ops", + "futures", + "indexmap", + "libc", + "log", + "once_cell", + "parking_lot 0.12.1", + "pin-project", + "serde", + "serde_json", + "serde_v8", + "sourcemap", + "url", + "v8", +] + +[[package]] +name = "deno_ops" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e217fd2f9a61bc581f6b13868a46ef800efb7532348fd86cc4fe49204d203ea6" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "directories" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "egui" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc9fcd393c3daaaf5909008a1d948319d538b79c51871e4df0993260260a94e4" +dependencies = [ + "ahash 0.8.0", + "epaint", + "nohash-hasher", +] + +[[package]] +name = "egui_extras" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f698f685bb0ad39e87109e2f695ded0bccde77d5d40bbf7590cb5561c1e3039d" +dependencies = [ + "egui", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "emath" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9542a40106fdba943a055f418d1746a050e1a903a049b030c2b097d4686a33cf" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "encase" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a516181e9a36e8982cb37933c5e7dba638c42938cacde46ee4e5b4156f881b9" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror", +] + +[[package]] +name = "encase_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5b802412eea315f29f2bb2da3a5963cd6121f56eaa06aebcdc0c54eea578f22" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2f4de457d974f548d2c2a16f709ebd81013579e543bd1a9b19ced88132c2cf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum_kind" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b940da354ae81ef0926c5eaa428207b8f4f091d3956c891dfbd124162bed99" +dependencies = [ + "pmutil", + "proc-macro2", + "swc_macros_common", + "syn", +] + +[[package]] +name = "env_logger" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "epaint" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ba04741be7f6602b1a1b28f1082cce45948a7032961c52814f8946b28493300" +dependencies = [ + "ab_glyph", + "ahash 0.8.0", + "atomic_refcell", + "bytemuck", + "emath", + "nohash-hasher", + "parking_lot 0.12.1", +] + +[[package]] +name = "erased-serde" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54558e0ba96fbe24280072642eceb9d7d442e32c7ec0ea9e7ecd7b4ea2cf4e11" +dependencies = [ + "serde", +] + +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + +[[package]] +name = "euclid" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "filetime" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "windows-sys 0.36.1", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide 0.5.4", +] + +[[package]] +name = "float-cmp" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75224bec9bfe1a65e2d34132933f2de7fe79900c96a0174307554244ece8150e" + +[[package]] +name = "float_next_after" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc612c5837986b7104a87a0df74a5460931f1c5274be12f8d0f40aa2f30d632" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fluent" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7" +dependencies = [ + "fluent-bundle", + "unic-langid", +] + +[[package]] +name = "fluent-bundle" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd" +dependencies = [ + "fluent-langneg", + "fluent-syntax", + "intl-memoizer", + "intl_pluralrules", + "rustc-hash", + "self_cell", + "smallvec", + "unic-langid", +] + +[[package]] +name = "fluent-langneg" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "fluent-syntax" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78" +dependencies = [ + "thiserror", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "from_variant" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0981e470d2ab9f643df3921d54f1952ea100c39fdb6a3fdc820e20d2291df6c" +dependencies = [ + "pmutil", + "proc-macro2", + "swc_macros_common", + "syn", +] + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "fslock" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57eafdd0c16f57161105ae1b98a1238f97645f2f588438b2949c99a2af9616bf" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gilrs" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ba7c37bf8ea7ba0c3e3795dfa1a7771b1e47c4bb417c4d27c7b338d79685f" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a8d94a7fc5afd27e894e08a4cfe5a49237f85bcc7140e90721bad3399c7d02" +dependencies = [ + "core-foundation 0.9.3", + "io-kit-sys", + "js-sys", + "libc", + "libudev-sys", + "log", + "nix 0.24.2", + "rusty-xinput", + "uuid", + "vec_map", + "wasm-bindgen", + "web-sys", + "winapi", +] + +[[package]] +name = "glam" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518faa5064866338b013ff9b2350dc318e14cc4fcd6cb8206d7e7c9886c98815" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "globset" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "glow" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + +[[package]] +name = "gpu-alloc" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d" +dependencies = [ + "bitflags", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a" +dependencies = [ + "bitflags", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +dependencies = [ + "bitflags", +] + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hash32-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d2aba832b60be25c1b169146b27c64115470981b128ed84c8db18c1b03c6ff" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", + "serde", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexasphere" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaadafd1beb6ad34cff5521987017ece5848f9ad5401fdb039bff896a643add4" +dependencies = [ + "glam", + "once_cell", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + +[[package]] +name = "image" +version = "0.23.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational 0.3.2", + "num-traits", + "png 0.16.8", + "tiff", +] + +[[package]] +name = "image" +version = "0.24.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-rational 0.4.1", + "num-traits", + "png 0.17.6", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", + "serde", +] + +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "inplace_it" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e567468c50f3d4bc7397702e09b380139f9b9288b4e909b070571007f8b5bf78" + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "interpolation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b7357d2bbc5ee92f8e899ab645233e43d21407573cceb37fed8bc3dede2c02" + +[[package]] +name = "intl-memoizer" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f" +dependencies = [ + "type-map 0.4.0", + "unic-langid", +] + +[[package]] +name = "intl_pluralrules" +version = "7.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b18f988384267d7066cc2be425e6faf352900652c046b6971d2e228d3b1c5ecf" +dependencies = [ + "tinystr", + "unic-langid", +] + +[[package]] +name = "io-kit-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7789f7f3c9686f96164f5109d69152de759e76e284f736bd57661c6df5091919" +dependencies = [ + "core-foundation-sys 0.8.3", + "mach", +] + +[[package]] +name = "is-macro" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c068d4c6b922cd6284c609cfa6dec0e41615c9c5a1a4ba729a970d8daba05fb" +dependencies = [ + "Inflector", + "pmutil", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + +[[package]] +name = "iyes_loopless" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fec251a82c60be9e282aec12056fa153666d5730b21d124655d7c22114d342c8" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_time", + "bevy_utils", +] + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +dependencies = [ + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jumpy" +version = "0.4.3" +dependencies = [ + "anyhow", + "async-channel", + "base64 0.13.0", + "bevy", + "bevy-has-load-progress", + "bevy-inspector-egui", + "bevy-parallax", + "bevy_ecs_dynamic", + "bevy_ecs_tilemap", + "bevy_egui", + "bevy_fluent", + "bevy_kira_audio", + "bevy_mod_js_scripting", + "bevy_prototype_lyon", + "bevy_tweening", + "blocking", + "bytes", + "clap", + "directories", + "egui_extras", + "either", + "fluent", + "fnv", + "futures-lite", + "getrandom", + "iyes_loopless", + "jumpy-matchmaker-proto", + "leafwing-input-manager", + "normalize-path", + "once_cell", + "postcard 1.0.2 (git+https://github.com/zicklag/postcard.git?branch=custom-error-messages)", + "quinn", + "quinn-bevy", + "rand", + "rustls", + "serde", + "serde_yaml", + "sys-locale", + "thiserror", + "ulid", + "unic-langid", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "jumpy-matchmaker" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-executor", + "async-io", + "bevy_tasks", + "blocking", + "clap", + "either", + "futures-lite", + "jumpy", + "jumpy-matchmaker-proto", + "once_cell", + "postcard 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quinn", + "quinn-bevy", + "rcgen", + "rustls", + "scc", + "serde", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "jumpy-matchmaker-proto" +version = "0.1.0" +dependencies = [ + "serde", + "ulid", +] + +[[package]] +name = "khronos-egl" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "kira" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d90f602ffc4996630769a645035b041786d1b927a17cfbc6a9c3000e62de9" +dependencies = [ + "atomic-arena", + "cpal", + "ringbuf", + "symphonia", +] + +[[package]] +name = "kqueue" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d6112e8f37b59803ac47a42d14f1f3a59bbf72fc6857ffc5be455e28a691f8e" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" +dependencies = [ + "bitflags", + "libc", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "leafwing-input-manager" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0e2dd6c5d8c0bc64951036855bb3fb8f4ed88442cb6c02ed490b29cae5c186" +dependencies = [ + "bevy", + "derive_more", + "itertools", + "leafwing_input_manager_macros", + "petitset", + "serde", +] + +[[package]] +name = "leafwing_input_manager_macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38676bbe26f336c5554150be0050a7033c72e882f8df4be5a2b3b1e6b2929cd" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "lexical" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" +dependencies = [ + "lexical-core", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.135" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "lyon_geom" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d89ccbdafd83d259403e22061be27bccc3254bba65cdc5303250c4227c8c8e" +dependencies = [ + "arrayvec 0.5.2", + "euclid", + "num-traits", +] + +[[package]] +name = "lyon_path" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0a59fdf767ca0d887aa61d1b48d4bbf6a124c1a45503593f7d38ab945bfbc0" +dependencies = [ + "lyon_geom", +] + +[[package]] +name = "lyon_tessellation" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7230e08dd0638048e46f387f255dbe7a7344a3e6705beab53242b5af25635760" +dependencies = [ + "float_next_after", + "lyon_path", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +dependencies = [ + "bitflags", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.36.1", +] + +[[package]] +name = "naga" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f50357e1167a3ab92d6b3c7f4bf5f7fd13fde3f4b28bf0d5ea07b5100fdb6c0" +dependencies = [ + "bit-set", + "bitflags", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "petgraph", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "ndk" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys 0.2.2", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys 0.3.0", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-glue" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" +dependencies = [ + "android_logger", + "lazy_static", + "libc", + "log", + "ndk 0.5.0", + "ndk-context", + "ndk-macro", + "ndk-sys 0.2.2", +] + +[[package]] +name = "ndk-glue" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0c4a7b83860226e6b4183edac21851f05d5a51756e97a1144b7f5a6b63e65f" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk 0.6.0", + "ndk-context", + "ndk-macro", + "ndk-sys 0.3.0", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "ndk-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset", +] + +[[package]] +name = "nix" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset", +] + +[[package]] +name = "nix" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normalize-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf22e319b2e3cb517350572e3b70c6822e0a520abfb5c78f690e829a73e8d9f2" + +[[package]] +name = "notify" +version = "5.0.0-pre.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "553f9844ad0b0824605c20fb55a661679782680410abfb1a8144c2e7e437e7a7" +dependencies = [ + "bitflags", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "mio", + "walkdir", + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "oboe" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f63c358b4fa0fbcfefd7c8be5cfc39c08ce2389f5325687e7762a48d30a5c1" +dependencies = [ + "jni", + "ndk 0.6.0", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3370abb7372ed744232c12954d920d1a40f1c4686de9e79e800021ef492294bd" +dependencies = [ + "cc", +] + +[[package]] +name = "once_cell" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owned_ttf_parser" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e6affeb1632d6ff6a23d2cd40ffed138e82f1532571a26f527c8a284bb2fbb" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.3", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.36.1", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "pem" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" +dependencies = [ + "base64 0.13.0", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "petgraph" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "petitset" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1a50d821a2526af6d5756c23c68e453532a986e361a3e12c9cc7fe61d862ac" +dependencies = [ + "serde", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros", + "phf_shared", + "proc-macro-hack", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.10", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "pmutil" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3894e5d549cccbe44afecf72922f277f603cd4bb0219c8342631ef18fffbe004" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide 0.3.7", +] + +[[package]] +name = "png" +version = "0.17.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f0e7f4c94ec26ff209cee506314212639d6c91b80afb82984819fafce9df01c" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide 0.5.4", +] + +[[package]] +name = "polling" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "libc", + "log", + "wepoll-ffi", + "winapi", +] + +[[package]] +name = "pollster" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7" + +[[package]] +name = "postcard" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c2b180dc0bade59f03fd005cb967d3f1e5f69b13922dad0cd6e047cb8af2363" +dependencies = [ + "cobs", + "serde", +] + +[[package]] +name = "postcard" +version = "1.0.2" +source = "git+https://github.com/zicklag/postcard.git?branch=custom-error-messages#c6c081107909bb84a901210d6aa6b3d83a3eadc8" +dependencies = [ + "cobs", + "serde", +] + +[[package]] +name = "pp-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "pretty-type-name" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8815d101cfb4cb491154896bdab292a395a7ac9ab185a9941a2f5be0135900d" + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74605f360ce573babfe43964cbe520294dcb081afbf8c108fc6e23036b4da2df" + +[[package]] +name = "quinn" +version = "0.8.0" +source = "git+https://github.com/quinn-rs/quinn.git#feca8abebf2b358141a675931b98043c355d4271" +dependencies = [ + "bytes", + "futures-io", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", + "webpki", +] + +[[package]] +name = "quinn-bevy" +version = "0.1.0" +dependencies = [ + "async-executor", + "async-io", + "bevy_tasks", + "futures-lite", + "pin-project", + "quinn", + "quinn-proto", + "quinn-udp", +] + +[[package]] +name = "quinn-proto" +version = "0.8.0" +source = "git+https://github.com/quinn-rs/quinn.git#feca8abebf2b358141a675931b98043c355d4271" +dependencies = [ + "bytes", + "rand", + "ring", + "rustc-hash", + "rustls", + "rustls-native-certs", + "slab", + "thiserror", + "tinyvec", + "tracing", + "webpki", +] + +[[package]] +name = "quinn-udp" +version = "0.2.0" +source = "git+https://github.com/quinn-rs/quinn.git#feca8abebf2b358141a675931b98043c355d4271" +dependencies = [ + "libc", + "quinn-proto", + "socket2", + "tracing", + "windows-sys 0.42.0", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radsort" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "range-alloc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" + +[[package]] +name = "raw-window-handle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +dependencies = [ + "cty", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring", + "time", + "yasna", +] + +[[package]] +name = "rectangle-pack" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "renderdoc-sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "ringbuf" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f65af18d50f789e74aaf23bbb3f65dcd22a3cb6e029b5bced149f6bd57c5c2a2" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "ron" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" +dependencies = [ + "base64 0.13.0", + "bitflags", + "serde", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.14", +] + +[[package]] +name = "rustls" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +dependencies = [ + "base64 0.13.0", +] + +[[package]] +name = "rusty-xinput" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2aa654bc32eb9ca14cce1a084abc9dfe43949a4547c35269a094c39272db3bb" +dependencies = [ + "lazy_static", + "log", + "winapi", +] + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scc" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054da6411906a6cfa45a4b5cc922a4fdfd395f4fd17d98ef4603d334b83d3639" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys 0.36.1", +] + +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "core-foundation-sys 0.8.3", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys 0.8.3", + "libc", +] + +[[package]] +name = "self_cell" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_bytes" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_v8" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c3efa9cff97d5a543df0508c37af619e422fb92eb525f38d255d46df7a0eb7" +dependencies = [ + "bytes", + "derive_more", + "serde", + "serde_bytes", + "smallvec", + "v8", +] + +[[package]] +name = "serde_yaml" +version = "0.9.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8613d593412a0deb7bbd8de9d908efff5a0cb9ccd8f62c641e7b2ed2f57291d1" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha-1" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "siphasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "serde", + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "sourcemap" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e031f2463ecbdd5f34c950f89f5c1e1032f22c0f8e3dc4bdb2e8b6658cf61eb" +dependencies = [ + "base64 0.11.0", + "if_chain", + "lazy_static", + "regex", + "rustc_version 0.2.3", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spirv" +version = "0.2.0+1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +dependencies = [ + "bitflags", + "num-traits", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stdweb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" + +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + +[[package]] +name = "string_cache" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot 0.12.1", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "string_enum" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "994453cd270ad0265796eb24abf5540091ed03e681c5f3c12bc33e4db33253e1" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "svgtypes" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c536faaff1a10837cfe373142583f6e27d81e96beba339147e77b67c9f260ff" +dependencies = [ + "float-cmp", + "siphasher 0.2.3", +] + +[[package]] +name = "swc_atoms" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ffecde9d1a937a61b4799478d598121b539eb7da6127c16af86a044017e1e5" +dependencies = [ + "once_cell", + "rustc-hash", + "serde", + "string_cache", + "string_cache_codegen", + "triomphe", +] + +[[package]] +name = "swc_common" +version = "0.27.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b0b6107e44797d0549bdb5b47a97682c3b914140269c01d2acdb16a1b885f6" +dependencies = [ + "ahash 0.7.6", + "ast_node", + "better_scoped_tls", + "cfg-if 1.0.0", + "debug_unreachable", + "either", + "from_variant", + "num-bigint", + "once_cell", + "rustc-hash", + "serde", + "siphasher 0.3.10", + "string_cache", + "swc_atoms", + "swc_eq_ignore_macros", + "swc_visit", + "tracing", + "unicode-width", + "url", +] + +[[package]] +name = "swc_config" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4de36224eb9498fccd4e68971f0b83326ccf8592c2d424f257f3a1c76b2b211" +dependencies = [ + "indexmap", + "serde", + "serde_json", + "swc_config_macro", +] + +[[package]] +name = "swc_config_macro" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb64bc03d90fd5c90d6ab917bb2b1d7fbd31957df39e31ea24a3f554b4372251" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn", +] + +[[package]] +name = "swc_ecma_ast" +version = "0.90.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f712949db06518bec7b7e050aa3bcde749a74fbf79f4f520ab179d0445b63593" +dependencies = [ + "bitflags", + "is-macro", + "num-bigint", + "scoped-tls", + "serde", + "string_enum", + "swc_atoms", + "swc_common", + "unicode-id", +] + +[[package]] +name = "swc_ecma_codegen" +version = "0.121.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fa47424bed05de6077eda3271d6764f87c2735a8f3798dea23c95898e5e0deb" +dependencies = [ + "memchr", + "num-bigint", + "once_cell", + "rustc-hash", + "serde", + "sourcemap", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_codegen_macros", + "tracing", +] + +[[package]] +name = "swc_ecma_codegen_macros" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0159c99f81f52e48fe692ef7af1b0990b45d3006b14c6629be0b1ffee1b23aea" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn", +] + +[[package]] +name = "swc_ecma_parser" +version = "0.117.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d88ffca99514bc8bfa8bf4f2d74fb673caa844e521b55035b8cfd10472b801d4" +dependencies = [ + "either", + "enum_kind", + "lexical", + "num-bigint", + "serde", + "smallvec", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "tracing", + "typed-arena", +] + +[[package]] +name = "swc_ecma_transforms_base" +version = "0.103.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aad7af4a1ae307e547a0f5ab6b081ffa6a22af89abe2f8a953a735a398ba9d" +dependencies = [ + "better_scoped_tls", + "bitflags", + "num_cpus", + "once_cell", + "phf", + "rustc-hash", + "serde", + "smallvec", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_ecma_utils", + "swc_ecma_visit", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms_macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebf907935ec5492256b523ae7935a824d9fdc0368dcadc41375bad0dca91cd8b" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn", +] + +[[package]] +name = "swc_ecma_transforms_react" +version = "0.141.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b57461fea819904faf5aeac39e49229995701a31fa5041929b7909885a69cc0a" +dependencies = [ + "ahash 0.7.6", + "base64 0.13.0", + "dashmap", + "indexmap", + "once_cell", + "regex", + "serde", + "sha-1", + "string_enum", + "swc_atoms", + "swc_common", + "swc_config", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_macros", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_typescript" +version = "0.145.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc0cba6d14b04900e5068d69c7492149c4e9320a9fcf79fca0e7224811c1d14" +dependencies = [ + "serde", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_transforms_react", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_utils" +version = "0.99.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92cff624945ded0b2bb07e9dfb44d57745abcc415b6025c6c3d2dc3a7af5396" +dependencies = [ + "indexmap", + "once_cell", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_visit", + "tracing", + "unicode-id", +] + +[[package]] +name = "swc_ecma_visit" +version = "0.76.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da9fbd418ce4dc3c7b10e74a919ecc6f56c376d63a6a03766655c6c2283475d" +dependencies = [ + "num-bigint", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_visit", + "tracing", +] + +[[package]] +name = "swc_eq_ignore_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c20468634668c2bbab581947bb8c75c97158d5a6959f4ba33df20983b20b4f6" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "swc_macros_common" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4be988307882648d9bc7c71a6a73322b7520ef0211e920489a98f8391d8caa2" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "swc_visit" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f2bcb7223e185c4c7cbf5e0c1207dec6d2bfd5e72e3fb7b3e8d179747e9130" +dependencies = [ + "either", + "swc_visit_macros", +] + +[[package]] +name = "swc_visit_macros" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1f3561674d84947694d41fb6d5737d19539222779baeac1b3a071a2b29428" +dependencies = [ + "Inflector", + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn", +] + +[[package]] +name = "symphonia" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17033fe05e4f7f10a6ad602c272bafd2520b2e5cdd9feb61494d9cdce08e002f" +dependencies = [ + "lazy_static", + "symphonia-bundle-mp3", + "symphonia-codec-vorbis", + "symphonia-core", + "symphonia-format-ogg", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-bundle-mp3" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5d3d53535ae2b7d0e39e82f683cac5398a6c8baca25ff1183e107d13959d3e" +dependencies = [ + "bitflags", + "lazy_static", + "log", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-codec-vorbis" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323b94435a1a807e1001e29490aeaef2660fb72b145d47497e8429a6cb1d67c3" +dependencies = [ + "log", + "symphonia-core", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "199a6417cd4115bac79289b64b859358ea050b7add0ceb364dc991f628c5b347" +dependencies = [ + "arrayvec 0.7.2", + "bitflags", + "bytemuck", + "lazy_static", + "log", +] + +[[package]] +name = "symphonia-format-ogg" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d2f741469a0f103607ed1f2605f7f00b13ba044ea9ddc616764558c6d3d9b7d" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-metadata" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed71acf6b5e6e8bee1509597b86365a06b78c1d73218df47357620a6fe5997b" +dependencies = [ + "encoding_rs", + "lazy_static", + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-utils-xiph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73cbb0766ce77a8aef535f9438db645e7b6f1b2c4cf3be9bf246b4e11a7d5531" +dependencies = [ + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "syn" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sys-locale" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658ee915b6c7b73ec4c1ffcd838506b5c5a4087eadc1ec8f862f1066cf2c8132" +dependencies = [ + "cc", + "cstr_core", + "js-sys", + "libc", + "wasm-bindgen", + "web-sys", + "winapi", +] + +[[package]] +name = "taffy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec27dea659b100d489dffa57cf0efc6d7bfefb119af817b92cc14006c0b214e3" +dependencies = [ + "arrayvec 0.7.2", + "hash32", + "hash32-derive", + "num-traits", + "typenum", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tiff" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" +dependencies = [ + "jpeg-decoder", + "miniz_oxide 0.4.4", + "weezl", +] + +[[package]] +name = "time" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" +dependencies = [ + "libc", + "num_threads", +] + +[[package]] +name = "tinystr" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29738eedb4388d9ea620eeab9384884fc3f06f586a2eddb56bedc5885126c7c1" + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "triomphe" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1ee9bd9239c339d714d657fac840c6d2a4f9c45f4f9ec7b0975113458be78db" +dependencies = [ + "serde", + "stable_deref_trait", +] + +[[package]] +name = "ttf-parser" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd" + +[[package]] +name = "type-map" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "type-map" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "typed-arena" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0685c84d5d54d1c26f7d3eb96cd41550adb97baed141a761cf335d3d33bcd0ae" + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "ulid" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a3aaa69b04e5b66cc27309710a569ea23593612387d67daaf102e73aa974fd" +dependencies = [ + "rand", + "serde", +] + +[[package]] +name = "unic-langid" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73328fcd730a030bdb19ddf23e192187a6b01cd98be6d3140622a89129459ce5" +dependencies = [ + "unic-langid-impl", +] + +[[package]] +name = "unic-langid-impl" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a4a8eeaf0494862c1404c95ec2f4c33a2acff5076f64314b465e3ddae1b934d" +dependencies = [ + "serde", + "tinystr", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-id" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d70b6494226b36008c8366c288d77190b3fad2eb4c10533139c1c1f461127f1a" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "unreachable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91" +dependencies = [ + "void", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e5fa573d8ac5f1a856f8d7be41d390ee973daf97c806b2c1a465e4e1406e68" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "uuid" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" +dependencies = [ + "getrandom", + "serde", + "sha1_smol", +] + +[[package]] +name = "v8" +version = "0.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be156dece7a023d5959a72dc0d398d6c95100ec601a2cea10d868da143e85166" +dependencies = [ + "bitflags", + "fslock", + "lazy_static", + "libc", + "which", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5cecfede1e530599c8686f7f2d609489101d3d63741a6dc423afc997ce3fcc8" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] -name = "maybe-uninit" -version = "2.0.0" +name = "void" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] -name = "miniquad" -version = "0.3.0-alpha.46" +name = "waker-fn" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1462459fb1813decc7115ab4aed8f41183612557b08bf604bfb46b05286d703" -dependencies = [ - "sapp-android", - "sapp-darwin", - "sapp-dummy", - "sapp-ios", - "sapp-linux", - "sapp-wasm", - "sapp-windows", -] +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] -name = "miniz_oxide" -version = "0.3.7" +name = "walkdir" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ - "adler32", + "same-file", + "winapi", + "winapi-util", ] [[package]] -name = "ndk-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" - -[[package]] -name = "nix" -version = "0.24.1" +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f17df307904acd05aa8e32e97bb20f2a0df1728bbc2d771ae8f9a90463441e9" -dependencies = [ - "bitflags", - "cfg-if", - "libc", -] +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "num-integer" -version = "0.1.45" +name = "wasm-bindgen" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ - "autocfg", - "num-traits", + "cfg-if 1.0.0", + "wasm-bindgen-macro", ] [[package]] -name = "num-iter" -version = "0.1.43" +name = "wasm-bindgen-backend" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", ] [[package]] -name = "num-rational" -version = "0.3.2" +name = "wasm-bindgen-futures" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] -name = "num-traits" -version = "0.2.15" +name = "wasm-bindgen-macro" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ - "autocfg", + "quote", + "wasm-bindgen-macro-support", ] [[package]] -name = "ogg" -version = "0.7.1" +name = "wasm-bindgen-macro-support" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e571c3517af9e1729d4c63571a27edd660ade0667973bfc74a67c660c2b651" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ - "byteorder", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", ] [[package]] -name = "once_cell" -version = "1.12.0" +name = "wasm-bindgen-shared" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] -name = "pkg-config" -version = "0.3.25" +name = "wasm_mutex" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "efbdddc3b163fc2d639800b3411a5428d1e151ba2a400a560b1545e39f1e68cd" +dependencies = [ + "serde", +] [[package]] -name = "png" -version = "0.16.8" +name = "web-sys" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" dependencies = [ - "bitflags", - "crc32fast", - "deflate", - "miniz_oxide", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "proc-macro2" -version = "1.0.40" +name = "webbrowser" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "fc6a3cffdb686fbb24d9fb8f03a213803277ed2300f11026a3afe1f108dc021b" dependencies = [ - "unicode-ident", + "jni", + "ndk-glue 0.6.2", + "url", + "web-sys", + "widestring", + "winapi", ] [[package]] -name = "quad-alsa-sys" -version = "0.3.2" +name = "webpki" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66c2f04a6946293477973d85adc251d502da51c57b08cd9c997f0cfd8dcd4b5" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" dependencies = [ - "libc", + "ring", + "untrusted", ] [[package]] -name = "quad-rand" -version = "0.2.1" +name = "weezl" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658fa1faf7a4cc5f057c9ee5ef560f717ad9d8dc66d975267f709624d6e1ab88" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] -name = "quad-snd" -version = "0.2.3" +name = "wepoll-ffi" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e0b4259cfd6a317a46df7b7cb4c09a08ba150642e6f6fb7df5a6b3450a0a29" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" dependencies = [ - "audir-sles", - "audrey", - "libc", - "quad-alsa-sys", - "winapi", + "cc", ] [[package]] -name = "quote" -version = "1.0.20" +name = "wgpu" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "277e967bf8b7820a76852645a6bce8bbd31c32fda2042e82d8e3ea75fda8892d" dependencies = [ - "proc-macro2", + "arrayvec 0.7.2", + "js-sys", + "log", + "naga", + "parking_lot 0.12.1", + "raw-window-handle", + "smallvec", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", ] [[package]] -name = "rusty-xinput" -version = "1.2.0" +name = "wgpu-core" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2aa654bc32eb9ca14cce1a084abc9dfe43949a4547c35269a094c39272db3bb" +checksum = "89b92788dec9d0c1bed849a1b83f01b2ee12819bf04a79c90f68e4173f7b5ba2" dependencies = [ - "lazy_static", + "arrayvec 0.7.2", + "bit-vec", + "bitflags", + "cfg_aliases", + "codespan-reporting", + "copyless", + "fxhash", "log", - "winapi", + "naga", + "parking_lot 0.12.1", + "profiling", + "raw-window-handle", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", ] [[package]] -name = "ryu" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" - -[[package]] -name = "sapp-android" -version = "0.1.10" +name = "wgpu-hal" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c0d0e6f562c01c533f693ac9c045d69cbeab24d2e16caaaa0e67d06ae6e0940" +checksum = "20cbdfc3d0637dba3d5536b93adef3d26023a0b96f0e1ee5ee9560a401d9f646" dependencies = [ - "libc", - "ndk-sys", + "android_system_properties", + "arrayvec 0.7.2", + "ash", + "bit-set", + "bitflags", + "block", + "core-graphics-types", + "d3d12", + "foreign-types", + "fxhash", + "glow", + "gpu-alloc", + "gpu-descriptor", + "inplace_it", + "js-sys", + "khronos-egl", + "libloading", + "log", + "metal", + "naga", + "objc", + "parking_lot 0.12.1", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", ] [[package]] -name = "sapp-darwin" -version = "0.1.8" +name = "wgpu-types" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1282369f486bc334efa2d76fa4d54c20b37664d83da14fc60afbe941814e374" +checksum = "1f762cbc08e1a51389859cf9c199c7aef544789cf3510889aab12c607f701604" dependencies = [ - "cc", + "bitflags", ] [[package]] -name = "sapp-dummy" -version = "0.1.5" +name = "which" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66f1ad26a5b6c682b9ca27c66db9aa91002b8d98a82ac7101ded57285215a478" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" dependencies = [ + "either", "libc", + "once_cell", ] [[package]] -name = "sapp-ios" -version = "0.1.2" +name = "widestring" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081e6e5261c9ac2e938979b6a854a53b439f065fc3c897205ce7e69d3028b4a9" -dependencies = [ - "cc", -] +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" [[package]] -name = "sapp-linux" -version = "0.1.14" +name = "winapi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc71510a7781d8f31d58046a9117682c8e8546ad43f52c0e31275db214495c3d" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "libc", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] -name = "sapp-wasm" -version = "0.1.26" +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e859e8645a3bcb85aecd40bab883438e4105f21b21bccbeac2348760f508bb" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "sapp-windows" -version = "0.2.20" +name = "winapi-util" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088f921b591fdcabf5f2dc17237be5203b6a1a6988f252d36e153f1442a8138e" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ "winapi", ] [[package]] -name = "serde" -version = "1.0.137" +name = "winapi-wsapoll" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" dependencies = [ - "serde_derive", + "winapi", ] [[package]] -name = "serde_derive" -version = "1.0.137" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "serde_json" -version = "1.0.81" +name = "windows-sys" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ - "itoa", - "ryu", - "serde", + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", ] [[package]] -name = "smallvec" -version = "0.6.14" +name = "windows-sys" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ - "maybe-uninit", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", ] [[package]] -name = "spin" -version = "0.9.3" +name = "windows_aarch64_gnullvm" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" [[package]] -name = "syn" -version = "1.0.98" +name = "windows_aarch64_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] -name = "toml" -version = "0.5.9" +name = "windows_aarch64_msvc" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" -dependencies = [ - "serde", -] +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" [[package]] -name = "ttf-parser" -version = "0.12.3" +name = "windows_i686_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] -name = "unicode-ident" -version = "1.0.1" +name = "windows_i686_gnu" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" [[package]] -name = "uuid" -version = "1.1.2" +name = "windows_i686_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] -name = "vec_map" -version = "0.8.2" +name = "windows_i686_msvc" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" [[package]] -name = "version_check" -version = "0.9.4" +name = "windows_x86_64_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "windows_x86_64_gnu" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" [[package]] -name = "wasm-bindgen" -version = "0.2.81" +name = "windows_x86_64_gnullvm" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" [[package]] -name = "wasm-bindgen-backend" -version = "0.2.81" +name = "windows_x86_64_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] -name = "wasm-bindgen-macro" -version = "0.2.81" +name = "windows_x86_64_msvc" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" [[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.81" +name = "winit" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", + "bitflags", + "cocoa", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "ndk 0.5.0", + "ndk-glue 0.5.2", + "ndk-sys 0.2.2", + "objc", + "parking_lot 0.11.2", + "percent-encoding", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winapi", + "x11-dl", ] [[package]] -name = "wasm-bindgen-shared" -version = "0.2.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" - -[[package]] -name = "web-sys" -version = "0.3.58" +name = "x11-dl" +version = "2.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" +checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6" dependencies = [ - "js-sys", - "wasm-bindgen", + "lazy_static", + "libc", + "pkg-config", ] [[package]] -name = "winapi" -version = "0.3.9" +name = "x11rb" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "6e99be55648b3ae2a52342f9a870c0e138709a3493261ce9b469afe6e4df6d8a" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "gethostname", + "nix 0.22.3", + "winapi", + "winapi-wsapoll", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "xi-unicode" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "yasna" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "346d34a236c9d3e5f3b9b74563f238f955bbd05fa0b8b4efa53c130c43982f4c" +dependencies = [ + "time", +] diff --git a/Cargo.toml b/Cargo.toml index e7c970b8ac..120f971d89 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,29 +5,88 @@ description = "A tactical 2D shooter" authors = ["The Fish Fight Game & Spicy Lobster Developers"] license = "MIT OR Apache-2.0" edition = "2021" +default-run = "jumpy" -[target.'cfg(target_arch = "wasm32")'.lib] -crate-type = ["cdylib"] +[workspace] +resolver = "2" +members = [ + ".", + "crates/*" +] [features] -default = [] - -[workspace] -members = ["core"] +default = ["render"] +render = [ + "bevy/x11", + "bevy/png", + "bevy/filesystem_watcher", + "bevy/bevy_gilrs", +] -[profile.dev.package."*"] -opt-level = 3 +[dependencies.bevy] +version = "0.8" +default-features = false +features = [ + "x11", + "png", + "filesystem_watcher", + "bevy_gilrs" +] [dependencies] -core = { path = "./core", package = "jumpy-core" } -ff-particles = { version = "0.1", features = ["serde"] } -fishsticks = { git = "https://github.com/fishfolks/fishsticks", default-features = false, features = ["gilrs"] } -macroquad = { version = "=0.3.16" } # Newer versions break is_key_pressed detection -macroquad-platformer = "0.1.3" -hecs = "0.7.1" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" +blocking = "1.2.0" +anyhow = "1.0.58" +bevy-parallax = "0.2.0" +bevy_egui = "0.16.1" +egui_extras = "0.19.0" +bevy_kira_audio = { version = "0.12.0", features = ["mp3"] } +iyes_loopless = "0.7.0" +serde = { version = "1.0.137", features = ["derive"] } +serde_yaml = "0.9.2" +thiserror = "1.0.31" +clap = { version = "4.0.18", features = ["derive", "env"] } +rand = "0.8.5" +getrandom = { version = "0.2", features = ["js"] } +bevy-has-load-progress = { path = "crates/bevy-has-load-progress", features = ["bevy_egui"] } +leafwing-input-manager = { version = "0.5.2", default-features = false } +unic-langid = "0.9.0" +bevy_fluent = "0.4.0" +sys-locale = "0.2.1" +fluent = "0.16.0" +directories = "4.0.1" +async-channel = "1.7.1" +once_cell = "1.13.0" +bevy_mod_js_scripting = { git = "https://github.com/zicklag/bevy_mod_js_scripting.git", branch = "jumpy" } +bevy_ecs_tilemap = { version = "0.7.0", features = ["atlas"] } +bevy_prototype_lyon = "0.6.0" +fnv = "1.0.7" +base64 = "0.13.0" +bevy_ecs_dynamic = { git = "https://github.com/jakobhellermann/bevy_ecs_dynamic" } +postcard = { git = "https://github.com/zicklag/postcard.git", branch = "custom-error-messages", default-features = false, features = ["alloc", "use-std"] } +futures-lite = "1.12.0" +either = "1.8.0" +jumpy-matchmaker-proto = { path = "crates/matchmaker-proto" } +bevy_tweening = { version= "0.5", default-features = false } + +# Debug tools +bevy-inspector-egui = { version = "0.13.0" } +ulid = { version = "1.0.0", features = ["serde"] } +bytes = "1.2.1" +rustls = { version = "0.20.7", features = ["dangerous_configuration", "quic"] } +normalize-path = "0.2.0" [target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen = "0.2.74" +wasm-bindgen = "0.2.83" +web-sys = { version = "0.3", features = ["Window","Location","Storage"] } + +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +quinn = { git = "https://github.com/quinn-rs/quinn.git", default-features = false, features = ["futures-io", "native-certs", "tls-rustls"] } +quinn-bevy = { path = "crates/quinn-bevy" } + +[profile.dev.package."*"] +opt-level = 1 # Set this to 3 if the game becomes slow to respond during gameplay +debug = false +[profile.release] +lto = true +codegen-units = 1 # Improved rapier physics perf, so it might help other stuff, too diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..70cd81514b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +# syntax=docker/dockerfile:1.4 + + +# +# Jumpy Matchmaker Docker image +# + +FROM rust:1.64-slim as builder + +RUN apt-get update && \ + apt-get install -y \ + curl \ + pkg-config \ + libudev-dev \ + libasound2-dev && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /usr/src/jumpy +COPY . . +RUN --mount=type=cache,target=/usr/local/cargo/registry/cache \ + --mount=type=cache,target=/usr/local/cargo/registry/index \ + --mount=type=cache,target=/usr/local/cargo/git/db \ + --mount=type=cache,target=/usr/src/jumpy/target \ + cargo build -p jumpy-matchmaker + +RUN --mount=type=cache,target=/usr/src/jumpy/target \ + cp target/debug/jumpy-matchmaker /usr/local/bin/jumpy-matchmaker + +# TODO: Slim down this container. We need to try and strip all unneeded deps from Bevy for the +# matchmaker. +FROM debian:bullseye +RUN apt-get update && apt-get install -y libasound2 && rm -rf /var/lib/apt/lists/* +COPY --from=builder /usr/local/bin/jumpy-matchmaker /usr/local/bin/jumpy-matchmaker +COPY --from=builder /usr/src/jumpy/assets /usr/local/share/jumpy/assets +ENV JUMPY_ASSET_DIR=/usr/local/share/jumpy/assets +EXPOSE 8943/udp +ENTRYPOINT /usr/local/bin/jumpy-matchmaker \ No newline at end of file diff --git a/PACKAGING.md b/PACKAGING.md index 61ecefaa86..f37fe3e06b 100644 --- a/PACKAGING.md +++ b/PACKAGING.md @@ -1,54 +1,3 @@ ## Packaging Fish Folk: Jumpy -### Dependencies - -#### Build dependencies - -- [Rust](https://www.rust-lang.org/tools/install) (`1.53.0+`) -- [libudev](https://www.freedesktop.org/software/systemd/man/libudev.html) - -#### Runtime dependencies - -- [libX11](https://gitlab.freedesktop.org/xorg/lib/libx11) -- [libXi](https://gitlab.freedesktop.org/xorg/lib/libxi) -- [Mesa](https://www.mesa3d.org/) - [OpenGL](https://www.opengl.org) (`3.2+`) -- [alsa-lib](https://github.com/alsa-project/alsa-lib) - -Also see [macroquad#linux](https://github.com/not-fl3/macroquad#linux). - -### Build - -```sh -# export CARGO_TARGET_DIR=target -cargo run --release --locked -``` - -### Environment variables - -- `JUMPY_CONFIG`: configuration file (default: `config.json`) -- `JUMPY_ASSETS`: assets directory (default: `assets/`) -- `JUMPY_MODS`: mods directory (default: `mods/`) - -### Package - -Binary will be located at `target/release/jumpy` after [build](#build). To run it, `assets` directory should be placed in the same directory or a path can be specified via `JUMPY_ASSETS` environment variable. - -For example: - -```sh -export JUMPY_ASSETS=/opt/jumpy/assets/ -export JUMPY_MODS=/opt/jumpy/mods/ -target/release/jumpy -``` - -The desktop file in the contrib/ directory can be installed to allow running the game from your desktop's app launcher. - -Also see [README.md#distro-packages](./README.md#distro-packages) - -### Binary releases - -Binary releases are automated via [Continuous Deployment](./.github/workflows/release.yml) workflow and they can be downloaded from the [releases](https://github.com/fishfolks/jumpy/releases) page. Release artifacts are named in the following format: - -- `jumpy--.` - -A single archive includes the `jumpy` binary and `assets` directory. It can be verified by using a SHA256 hash file that has the same name as the artifact except it ends with ".sha256". Release artifacts are not signed at this time. +TODO: Rewrite for Bevy refactor. \ No newline at end of file diff --git a/README.md b/README.md index 075aceaa70..2685a7d6a7 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,9 @@ Fish Folk: Jumpy is a tactical 2D shooter, played by up to 4 players online or o ### Status -The game is fully playable: \ -https://twitter.com/spicylobsterfam/status/1424084016467226624 +The game is currently under re-construction as it is being rewritten to use the [Bevy] game engine. The game is playable, but some maps have not been fully ported, many items are missing, and there are several bugs. + +[Bevy]: https://bevyengine.org ## Community @@ -65,10 +66,6 @@ pacman -S jumpy 2. Clone this repository: `git clone https://github.com/fishfolks/jumpy.git` 3. `cargo run` -## Default Keybindings - -You can view and modify the default keybindings in [config.toml](./config.toml). - ## Credits - [Fish Folk: Jumpy Credits](./CREDITS.md) diff --git a/assets/default.game.yaml b/assets/default.game.yaml new file mode 100644 index 0000000000..051a2d7112 --- /dev/null +++ b/assets/default.game.yaml @@ -0,0 +1,310 @@ +camera_height: 448 +clear_color: 27233B +physics: + terminal_velocity: 20 + friction_lerp: 0.96 + stop_threshold: 1.0 + +players: + - player/skins/catty/catty.player.yaml + - player/skins/fishy/fishy.player.yaml + - player/skins/lionfishy/lionfishy.player.yaml + - player/skins/orcy/orcy.player.yaml + - player/skins/sharky/sharky.player.yaml + - player/skins/pescy/pescy.player.yaml + +maps: + - map/levels/lev01.map.json + - map/levels/lev02.map.json + - map/levels/lev03.map.json + - map/levels/lev04.map.json + - map/levels/lev05.map.json + - map/levels/lev06.map.json + - map/levels/lev07.map.json + - map/levels/zyrafa01.map.json + - map/levels/zyrafa02.map.json + - map/levels/zyrafa03.map.json + - map/levels/zyrafa04.map.json + - map/levels/zyrafa05.map.json + - map/levels/zyrafa06.map.json + +scripts: + - map/scripts/kill_out_of_bounds.ts + - player/states/default.ts + - player/states/dead.ts + - player/states/idle.ts + - player/states/walk.ts + - player/states/midair.ts + - player/states/crouch.ts + +client_scripts: + - game/camera_controller.ts + - ui/menu-background-zoom.ts + +main_menu: + title_font: + family: fairfax + color: FFFFFF + size: 85 + subtitle_font: + family: fairfax + color: FFFFFF + size: 60 + + background_image: + image: ui/menu-background.png + image_size: [896, 480] + + menu_width: 350 + +default_settings: + matchmaking_server: localhost:8943 + player_controls: + # Gamepad controls + gamepad: + movement: + up: !SingleAxis + axis_type: !Gamepad LeftStickY + positive_low: 0.1 + negative_low: -1.0 + + left: !SingleAxis + axis_type: !Gamepad LeftStickX + positive_low: 1.0 + negative_low: -0.1 + + down: !SingleAxis + axis_type: !Gamepad LeftStickY + positive_low: 1.0 + negative_low: -0.1 + + right: !SingleAxis + axis_type: !Gamepad LeftStickX + positive_low: 0.1 + negative_low: -1.0 + jump: !GamepadButton South + grab: !GamepadButton East + shoot: !GamepadButton West + slide: !GamepadButton North + + # Controls for the first keyboard player ( left side ) + keyboard1: + movement: + up: !Keyboard W + down: !Keyboard S + left: !Keyboard A + right: !Keyboard D + jump: !Keyboard Space + grab: !Keyboard V + shoot: !Keyboard C + slide: !Keyboard B + + # Controls for the second keyboard player ( right side ) + keyboard2: + movement: + up: !Keyboard Up + down: !Keyboard Down + left: !Keyboard Left + right: !Keyboard Right + jump: !Keyboard Comma + grab: !Keyboard RShift + shoot: !Keyboard Period + slide: !Keyboard Slash + +ui_theme: + scale: 0.65 + colors: + positive: 3EC761 + + widgets: + border_radius: 1.5 + default: &default + bg_fill: 3A4444 + bg_stroke: &default-stroke 181425 + text: FFFFFF + hovered: + bg_fill: 566363 + bg_stroke: *default-stroke + text: FFFFFF + active: + bg_fill: 566363 + bg_stroke: 86809B + text: FFFFFF + noninteractive: + bg_fill: 262B44 + bg_stroke: 181425 + text: FFFFFF + menu: *default + + font_families: + fairfax: ui/FairfaxSM.ttf + ark: ui/ark-pixel-16px-latin.ttf + + font_styles: + heading: + family: ark + size: 40 + color: FFFFFF + bigger: + family: ark + size: 25 + color: FFFFFF + normal: + family: ark + size: 20 + color: FFFFFF + smaller: + family: ark + size: 15 + color: FFFFFF + + editor: + icons: + select: + image: ui/editor/Cursor.png + image_size: [64, 64] + tile: + image: ui/editor/Tile.png + image_size: [64, 64] + spawn: + image: ui/editor/Pointer and Map.png + image_size: [64, 64] + erase: + image: ui/editor/Eraser.png + image_size: [64, 64] + + hud: + font: + family: ark + size: 15 + color: FFFFFF + + player_hud_width: 165 + + portrait_frame: + image: ui/panel.png + image_size: [32, 32] + border_size: + top: 8 + left: 8 + right: 8 + bottom: 8 + + lifebar: + height: 16 + background_image: + image: ui/lifebar.png + image_size: [19, 7] + border_size: + left: 3 + right: 3 + top: 3 + bottom: 3 + scale: 2 + progress_image: + image: ui/lifebar-progress.png + image_size: [1, 1] + + panel: + font_color: FFFFFF + padding: + top: 25 + bottom: 25 + left: 25 + right: 25 + border: + image: ui/panel.png + image_size: [38, 34] + border_size: + top: 11 + bottom: 11 + left: 12 + right: 21 + scale: 4 + + button_styles: + normal: + font: + family: ark + color: FFFFFF + size: 20 + padding: + top: 6 + left: 6 + right: 6 + bottom: 9 + borders: + default: + image: ui/button.png + image_size: [14, 14] + border_size: + top: 5 + bottom: 5 + right: 5 + left: 5 + scale: 2 + focused: + image: ui/button-focused.png + image_size: [14, 14] + border_size: + top: 5 + bottom: 5 + right: 5 + left: 5 + scale: 2 + clicked: + image: ui/button-down.png + image_size: [14, 14] + border_size: + top: 5 + bottom: 5 + right: 5 + left: 5 + scale: 2 + + small: + font: + family: ark + color: FFFFFF + size: 17 + padding: + top: 4 + left: 4 + right: 4 + bottom: 6 + borders: + default: + image: ui/button.png + image_size: [14, 14] + border_size: + top: 5 + bottom: 5 + right: 5 + left: 5 + scale: 2 + focused: + image: ui/button-focused.png + image_size: [14, 14] + border_size: + top: 5 + bottom: 5 + right: 5 + left: 5 + scale: 2 + clicked: + image: ui/button-down.png + image_size: [14, 14] + border_size: + top: 5 + bottom: 5 + right: 5 + left: 5 + scale: 2 + +translations: + # This is the locale that we will fallback to if the selected locale doesn't have + # translation for a certain message. + default_locale: en-US + locales: + - locales/en-US/en-US.ftl.yml + - locales/fr-FR/fr-FR.ftl.yml diff --git a/assets/game/camera_controller.ts b/assets/game/camera_controller.ts new file mode 100644 index 0000000000..bc791740c6 --- /dev/null +++ b/assets/game/camera_controller.ts @@ -0,0 +1,46 @@ +const lerpFactor = 0.1; + +export default { + postUpdateInGame() { + const mapQuery = world.query(MapMeta)[0]; + if (!mapQuery) return; + + const playerComponents = world + .query(PlayerIdx, Transform) + .map((x) => x.components); + + const [_, cameraTransform, projection] = world.query( + GameCamera, + Transform, + OrthographicProjection + )[0].components; + + let middlePoint = { x: 0, y: 0 }; + let min = { x: 100000, y: 100000 }; + let max = { x: -100000, y: -100000 }; + + const player_count = playerComponents.length; + + for (const [_, playerTransform] of playerComponents) { + const playerPos = playerTransform.translation; + middlePoint.x += playerPos.x; + middlePoint.y += playerPos.y; + + min.x = Math.min(playerPos.x, min.x); + min.y = Math.min(playerPos.y, min.y); + max.x = Math.max(playerPos.x, max.x); + max.y = Math.max(playerPos.y, max.y); + } + + middlePoint.x /= Math.max(player_count, 1); + middlePoint.y /= Math.max(player_count, 1); + + for (const dim of ["x", "y"]) { + let delta = cameraTransform.translation[dim] - middlePoint[dim]; + let dist = delta * lerpFactor; + cameraTransform.translation[dim] -= dist; + } + + projection.scale = 1.25; + }, +}; diff --git a/assets/locales/en-US/branding.ftl b/assets/locales/en-US/branding.ftl new file mode 100644 index 0000000000..2289d25dda --- /dev/null +++ b/assets/locales/en-US/branding.ftl @@ -0,0 +1,2 @@ +title = Fish Folk +subtitle = Jumpy diff --git a/assets/locales/en-US/controls.ftl b/assets/locales/en-US/controls.ftl new file mode 100644 index 0000000000..287b16320b --- /dev/null +++ b/assets/locales/en-US/controls.ftl @@ -0,0 +1,8 @@ +move-up = Move Up +move-down = Move Down +move-left = Move Left +move-right = Move Right +jump = Jump +grab-drop = Grab / Drop +shoot = Shoot +slide = Slide \ No newline at end of file diff --git a/assets/locales/en-US/debug-tools.ftl b/assets/locales/en-US/debug-tools.ftl new file mode 100644 index 0000000000..2babfc65a7 --- /dev/null +++ b/assets/locales/en-US/debug-tools.ftl @@ -0,0 +1,10 @@ +debug-tools = Debug Tools +show-collision-shapes = Show Collision Shapes +show-world-inspector = Show World Inspector +show-frame-time-diagnostics = Show Frame Time Diagnostics +show-network-visualizer = Show Network Visualizer + +frame-diagnostics = Frame Diagnostics +frames-per-second = Frames Per Second +frame-time = Frame Time +reset-min-max = Reset Min/Max \ No newline at end of file diff --git a/assets/locales/en-US/editor.ftl b/assets/locales/en-US/editor.ftl new file mode 100644 index 0000000000..1dbdc7362c --- /dev/null +++ b/assets/locales/en-US/editor.ftl @@ -0,0 +1,29 @@ +layers = Layers +create-layer = Create a New Layer + +map-info = Map Info +map-export = Map Export +tiles = Tiles +tile = Tile +tile-layer = Tile Layer +tile-layer-icon = T +element = Element +element-layer = Element Layer +element-layer-icon = E +toggle-visibility = Toggle Visibility + +create = Create +layer-kind = Layer Kind +create-map = Create Map +name = Name +grid-size = Grid Size + +tilemap-path = Tilemap Path + +open-map = Open Map +no-map-loaded = No map loaded + +view-zoom = Zoom { $percent }% +view-offset = Camera Offset [ { $x }, { $y } ] +view-reset = Reset View +show-grid = Show Grid \ No newline at end of file diff --git a/assets/locales/en-US/en-US.ftl.yml b/assets/locales/en-US/en-US.ftl.yml new file mode 100644 index 0000000000..b1d88b6462 --- /dev/null +++ b/assets/locales/en-US/en-US.ftl.yml @@ -0,0 +1,13 @@ +locale: en-US +resources: + - branding.ftl + - menu.ftl + - debug-tools.ftl + + - matchmaking.ftl + - settings.ftl + - editor.ftl + - player-select.ftl + - map-select.ftl + + - controls.ftl \ No newline at end of file diff --git a/assets/locales/en-US/map-select.ftl b/assets/locales/en-US/map-select.ftl new file mode 100644 index 0000000000..01f32de818 --- /dev/null +++ b/assets/locales/en-US/map-select.ftl @@ -0,0 +1,2 @@ +map-select-title = Map Select +waiting-for-map = Waiting for other player to select map... \ No newline at end of file diff --git a/assets/locales/en-US/matchmaking.ftl b/assets/locales/en-US/matchmaking.ftl new file mode 100644 index 0000000000..568ded7b50 --- /dev/null +++ b/assets/locales/en-US/matchmaking.ftl @@ -0,0 +1,8 @@ +configure-match = Configure Match +player-count = Player Count +search-for-match = Search for Match +connecting = Connecting... +connected-and-querying = Connected +waiting-for-players = Waiting for Players: { $current } / { $total } +match-ready = Match Ready! +error = Error \ No newline at end of file diff --git a/assets/locales/en-US/menu.ftl b/assets/locales/en-US/menu.ftl new file mode 100644 index 0000000000..8eed40ad3b --- /dev/null +++ b/assets/locales/en-US/menu.ftl @@ -0,0 +1,22 @@ +# Menu Pages +local-game = Local Game +online-game = Online Game +main-menu = Main Menu +map-editor = Map Editor +editor = Map Editor +settings = Settings +paused = Paused + +# Actions +close = Close +save = Save +reset = Reset +cancel = Cancel +back = Back +continue = Continue +edit = Edit +play = Play +quit = Quit +export = Export +reload = Reload +restart = Restart \ No newline at end of file diff --git a/assets/locales/en-US/player-select.ftl b/assets/locales/en-US/player-select.ftl new file mode 100644 index 0000000000..18bb3a12e5 --- /dev/null +++ b/assets/locales/en-US/player-select.ftl @@ -0,0 +1,6 @@ +keyboard = Keyboard +press-jump-to-join = Press Jump Button to Join +player-select-title = Player Select +pick-a-fish = Pick a Fish +player-select-ready = Ready! +you-marker = < You > \ No newline at end of file diff --git a/assets/locales/en-US/settings.ftl b/assets/locales/en-US/settings.ftl new file mode 100644 index 0000000000..a63c0e9257 --- /dev/null +++ b/assets/locales/en-US/settings.ftl @@ -0,0 +1,14 @@ +# Controller Settings + +controls = Controls +bind-input = Make an input to bind or press Escape to cancel + +keyboard-1 = Keyboard 1 +keyboard-2 = Keyboard 2 +gamepad = Gamepad + +action = Action + +# Networking settings +networking = Networking +matchmaking-server = Matchmaking Server diff --git a/assets/locales/fr-FR/fr-FR.ftl.yml b/assets/locales/fr-FR/fr-FR.ftl.yml new file mode 100644 index 0000000000..d59f8ddb47 --- /dev/null +++ b/assets/locales/fr-FR/fr-FR.ftl.yml @@ -0,0 +1,3 @@ +locale: fr-FR +resources: + - main.ftl \ No newline at end of file diff --git a/assets/locales/fr-FR/main.ftl b/assets/locales/fr-FR/main.ftl new file mode 100644 index 0000000000..78999207cd --- /dev/null +++ b/assets/locales/fr-FR/main.ftl @@ -0,0 +1,7 @@ +# Main Menu +start-game = Démarrer Jeu + +# Pause Menu +paused = En Pause +continue = Continuez +main-menu = Menu Principal \ No newline at end of file diff --git a/assets/map/elements/decoration/anemones/anemones.atlas.yaml b/assets/map/elements/decoration/anemones/anemones.atlas.yaml new file mode 100644 index 0000000000..db0776e716 --- /dev/null +++ b/assets/map/elements/decoration/anemones/anemones.atlas.yaml @@ -0,0 +1,4 @@ +image: ./anemones.png +tile_size: [48, 51] +rows: 1 +columns: 5 \ No newline at end of file diff --git a/assets/map/elements/decoration/anemones/anemones.element.yaml b/assets/map/elements/decoration/anemones/anemones.element.yaml new file mode 100644 index 0000000000..cad59b7e7a --- /dev/null +++ b/assets/map/elements/decoration/anemones/anemones.element.yaml @@ -0,0 +1,7 @@ +name: Anemones +category: Decorations +scripts: + - ./anemones.ts +editor_size: [48, 51] +preload_assets: + - ./anemones.atlas.yaml \ No newline at end of file diff --git a/assets/map/elements/decoration/anemones/anemones.png b/assets/map/elements/decoration/anemones/anemones.png new file mode 100644 index 0000000000..73f340f404 Binary files /dev/null and b/assets/map/elements/decoration/anemones/anemones.png differ diff --git a/assets/map/elements/decoration/anemones/anemones.ts b/assets/map/elements/decoration/anemones/anemones.ts new file mode 100644 index 0000000000..b1e20e89b8 --- /dev/null +++ b/assets/map/elements/decoration/anemones/anemones.ts @@ -0,0 +1,18 @@ +export default { + preUpdate() { + for (const entity of MapElement.getSpawnedEntities()) { + world.insert( + entity, + Value.create(AnimatedSprite, { + start: 0, + end: 4, + repeat: true, + fps: 6, + atlas: { + id: Assets.getHandleId("./anemones.atlas.yaml"), + }, + }) + ); + } + }, +}; diff --git a/assets/map/elements/decoration/seaweed/seaweed.atlas.yaml b/assets/map/elements/decoration/seaweed/seaweed.atlas.yaml new file mode 100644 index 0000000000..48feec64af --- /dev/null +++ b/assets/map/elements/decoration/seaweed/seaweed.atlas.yaml @@ -0,0 +1,4 @@ +image: ./seaweed.png +tile_size: [48, 51] +rows: 1 +columns: 5 \ No newline at end of file diff --git a/assets/map/elements/decoration/seaweed/seaweed.element.yaml b/assets/map/elements/decoration/seaweed/seaweed.element.yaml new file mode 100644 index 0000000000..05d8221ebc --- /dev/null +++ b/assets/map/elements/decoration/seaweed/seaweed.element.yaml @@ -0,0 +1,7 @@ +name: Seaweed +category: Decorations +scripts: + - ./seaweed.ts +editor_size: [48, 51] +preload_assets: + - ./seaweed.atlas.yaml diff --git a/assets/map/elements/decoration/seaweed/seaweed.png b/assets/map/elements/decoration/seaweed/seaweed.png new file mode 100644 index 0000000000..45fdd6de1b Binary files /dev/null and b/assets/map/elements/decoration/seaweed/seaweed.png differ diff --git a/assets/map/elements/decoration/seaweed/seaweed.ts b/assets/map/elements/decoration/seaweed/seaweed.ts new file mode 100644 index 0000000000..87829d1b9f --- /dev/null +++ b/assets/map/elements/decoration/seaweed/seaweed.ts @@ -0,0 +1,17 @@ +export default { + preUpdate() { + for (const entity of MapElement.getSpawnedEntities()) { + let animated_sprite = Value.create(AnimatedSprite, { + start: 0, + end: 4, + repeat: true, + fps: 6, + atlas: { + id: Assets.getHandleId("./seaweed.atlas.yaml"), + }, + }); + + world.insert(entity, animated_sprite); + } + }, +}; diff --git a/assets/map/elements/environment/crab/crab.atlas.yaml b/assets/map/elements/environment/crab/crab.atlas.yaml new file mode 100644 index 0000000000..7d8617ce71 --- /dev/null +++ b/assets/map/elements/environment/crab/crab.atlas.yaml @@ -0,0 +1,4 @@ +image: ./crab.png +tile_size: [17, 12] +rows: 1 +columns: 2 diff --git a/assets/map/elements/environment/crab/crab.element.yaml b/assets/map/elements/environment/crab/crab.element.yaml new file mode 100644 index 0000000000..4457b44bc0 --- /dev/null +++ b/assets/map/elements/environment/crab/crab.element.yaml @@ -0,0 +1,7 @@ +name: Crab +category: Critters +scripts: + - ./crab.ts +editor_size: [17, 12] +preload_assets: + - ./crab.atlas.yaml diff --git a/assets/textures/items/Crab(17x12).png b/assets/map/elements/environment/crab/crab.png similarity index 100% rename from assets/textures/items/Crab(17x12).png rename to assets/map/elements/environment/crab/crab.png diff --git a/assets/map/elements/environment/crab/crab.ts b/assets/map/elements/environment/crab/crab.ts new file mode 100644 index 0000000000..0c3d104a0b --- /dev/null +++ b/assets/map/elements/environment/crab/crab.ts @@ -0,0 +1,88 @@ +const initState: { crabs: JsEntity[] } = { + crabs: [], +}; + +const MapMeta: BevyType = { + typeName: "jumpy::metadata::map::MapMeta", +}; + +let i = 0; + +const state = Script.state(initState); + +export default { + preUpdateInGame() { + const mapQuery = world.query(MapMeta)[0]; + if (!mapQuery) { + state.crabs = []; + return; + } + + const spawnedEntities = MapElement.getSpawnedEntities(); + if (spawnedEntities.length > 0) { + state.crabs = []; + } + + // Handle newly spawned map entities + for (const spanwer_entity of spawnedEntities) { + const [transform, global_transform, computed_visibility] = world + .query(Transform, GlobalTransform, ComputedVisibility) + .get(spanwer_entity); + + // Spawn a new entity for the crab and copy the transform and visibility from the map element + const entity = world.spawn(); + state.crabs.push(EntityRef.toJs(entity)); + + world.insert(entity, Value.create(EntityName, ["Critter: Crab"])); + world.insert(entity, transform); + world.insert(entity, global_transform); + world.insert(entity, computed_visibility); + world.insert(entity, Value.create(Visibility)); + + // Add the animated sprite + world.insert( + entity, + Value.create(AnimatedSprite, { + start: 0, + end: 1, + repeat: true, + fps: 3, + atlas: { + id: Assets.getHandleId("crab.atlas.yaml"), + }, + }) + ); + + // And the kinematic body + world.insert( + entity, + Value.create(KinematicBody, { + size: { + x: 18, + y: 12, + }, + gravity: 1, + has_friction: true, + has_mass: true, + }) + ); + } + }, + + updateInGame() { + i++; + const query = world.query(KinematicBody); + + for (const crab of state.crabs) { + const components = query.get(EntityRef.fromJs(crab)); + if (!components) continue; + const [kinematicBody] = components; + + if (i % 100 == 0) { + i = 0; + kinematicBody.velocity.x = + Math.random() * 3 * (Math.random() >= 0.5 ? -1 : 1); + } + } + }, +}; diff --git a/assets/map/elements/environment/fish_school/fish_school.element.yaml b/assets/map/elements/environment/fish_school/fish_school.element.yaml new file mode 100644 index 0000000000..7534ee65c5 --- /dev/null +++ b/assets/map/elements/environment/fish_school/fish_school.element.yaml @@ -0,0 +1,4 @@ +name: Fish School +category: Critters +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/environment/fish_school/sproinger.ts b/assets/map/elements/environment/fish_school/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/environment/fish_school/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/environment/player_spawner/player_spawner.element.yaml b/assets/map/elements/environment/player_spawner/player_spawner.element.yaml new file mode 100644 index 0000000000..573eb54f84 --- /dev/null +++ b/assets/map/elements/environment/player_spawner/player_spawner.element.yaml @@ -0,0 +1,5 @@ +name: Player Spawner +category: Gampelay +scripts: + - ./player_spawner.ts +editor_size: [16, 32] diff --git a/assets/map/elements/environment/player_spawner/player_spawner.ts b/assets/map/elements/environment/player_spawner/player_spawner.ts new file mode 100644 index 0000000000..eb1dbb9f3f --- /dev/null +++ b/assets/map/elements/environment/player_spawner/player_spawner.ts @@ -0,0 +1,51 @@ +const initState: { spawners: JsEntity[]; currentSpawner: number } = { + currentSpawner: 0, + spawners: [], +}; + +const state = Script.state(initState); + +export default { + preUpdate() { + if (NetInfo.get().is_client) return; + + const player_inputs = world.resource(PlayerInputs); + + const mapQuery = world.query(MapMeta)[0]; + if (!mapQuery) { + state.spawners = []; + return; + } + + const spawnedEntities = MapElement.getSpawnedEntities(); + if (spawnedEntities.length > 0) { + state.spawners = spawnedEntities.map((e) => EntityRef.toJs(e)); + } + + // Collect all the alive players on the map + const alive_players = world.query(PlayerIdx).map((x) => x.components[0][0]); + + // For every player + for (let i = 0; i < 4; i++) { + // Get the player input + const player = player_inputs.players[i]; + + // If the player is active, but not alive + if (player.active && !alive_players.includes(i)) { + // Get the next spawner + state.currentSpawner += 1; + state.currentSpawner %= state.spawners.length; + + const spawner = EntityRef.fromJs(state.spawners[state.currentSpawner]); + + // Get the spawner transform + const [spawnerTransform] = world.query(Transform).get(spawner); + + // Spawn the player + const player = world.spawn(); + world.insert(player, Value.create(PlayerIdx, [i])); + world.insert(player, spawnerTransform); + } + } + }, +}; diff --git a/assets/map/elements/environment/sproinger/sproinger.atlas.yaml b/assets/map/elements/environment/sproinger/sproinger.atlas.yaml new file mode 100644 index 0000000000..698ceb46a7 --- /dev/null +++ b/assets/map/elements/environment/sproinger/sproinger.atlas.yaml @@ -0,0 +1,4 @@ +image: ./sproinger.png +tile_size: [32, 20] +rows: 3 +columns: 2 diff --git a/assets/map/elements/environment/sproinger/sproinger.element.yaml b/assets/map/elements/environment/sproinger/sproinger.element.yaml new file mode 100644 index 0000000000..f42a17486f --- /dev/null +++ b/assets/map/elements/environment/sproinger/sproinger.element.yaml @@ -0,0 +1,6 @@ +name: Sproinger +category: Gameplay +scripts: + - ./sproinger.ts +preload_assets: + - ./sproinger.atlas.yaml \ No newline at end of file diff --git a/assets/textures/items/Sproinger(31x20).png b/assets/map/elements/environment/sproinger/sproinger.png similarity index 100% rename from assets/textures/items/Sproinger(31x20).png rename to assets/map/elements/environment/sproinger/sproinger.png diff --git a/assets/map/elements/environment/sproinger/sproinger.ts b/assets/map/elements/environment/sproinger/sproinger.ts new file mode 100644 index 0000000000..bb49f57745 --- /dev/null +++ b/assets/map/elements/environment/sproinger/sproinger.ts @@ -0,0 +1,135 @@ +// Define the sproinger state types +type SproingerState = { + sproinging: boolean; + frame: number; +}; + +// Initialize script state. +// +// This will be used to keep track of which entities in the world are sproingers. +const initState: { sproingers: JsEntity[] } = { + sproingers: [], +}; +const state = Script.state(initState); + +// Add our constants +const FORCE = 25; + +export default { + preUpdateInGame() { + // Check for the existence of the map + const map = world.query(MapMeta)[0]; + // If there is no map + if (!map) { + // lear our sproinger list + state.sproingers = []; + return; + } + + // Get the list of spawned entities + const spawnedEntities = MapElement.getSpawnedEntities(); + // If there are spawned entities, that means the map was loaded or reloaded. + if (spawnedEntities.length > 0) { + // So clear our sproinger list + state.sproingers = []; + } + + // For every new sproinger entity + for (const entity of spawnedEntities) { + // Add this entity to our list of sproingers. + // + // Note: Because we cannot persist entity refs across frames, + // we must first convert the entity to a JSON representation. + state.sproingers.push(EntityRef.toJs(entity)); + + // Add the sprite + world.insert( + entity, + Value.create(AnimatedSprite, { + start: 0, + end: 6, + repeat: false, + fps: 0, + atlas: { + id: Assets.getHandleId("./sproinger.atlas.yaml"), + }, + }) + ); + // And the physics body + world.insert( + entity, + Value.create(KinematicBody, { + size: { + x: 32, + y: 8, + }, + offset: { + y: -6, + }, + has_mass: false, + }) + ); + } + }, + + updateInGame() { + const bodies = world.query(KinematicBody); + const animatedSprites = world.query(AnimatedSprite); + + // Loop over all our sproingers + for (const jsEntity of state.sproingers) { + // We must convert our JsEntities to entity refs to use in world queries. + const entity = EntityRef.fromJs(jsEntity); + + // Get our sproinger sprite + const [sprite] = animatedSprites.get(entity); + + // Get the script-local state for the sproinger entity + const entState = Script.getEntityState(entity, { + frame: 0, + sproinging: false, + }); + + // If the sproinger is currently sproinging + if (entState.sproinging) { + // Play the sproinging animation + switch (entState.frame) { + case 0: + sprite.index = 2; + break; + case 4: + sprite.index = 3; + break; + case 8: + sprite.index = 4; + break; + case 12: + sprite.index = 5; + break; + case 20: + sprite.index = 0; + entState.sproinging = false; + entState.frame = 0; + break; + } + entState.frame += 1; + } + + // See if the spoinger has any collisions + for (const collidedEntity of CollisionWorld.actorCollisions(entity)) { + // Get the kinematic body of the collided entity + const components = bodies.get(collidedEntity); + if (!components) continue; + const [body] = components; + + if (!entState.sproinging) { + // Apply the sproing force to the body + body.velocity.y = FORCE; + + // Go into a sproinging state + entState.sproinging = true; + } + } + } + }, +}; diff --git a/assets/map/elements/item/blunderbass/blunderbass.element.yaml b/assets/map/elements/item/blunderbass/blunderbass.element.yaml new file mode 100644 index 0000000000..1dc32194b5 --- /dev/null +++ b/assets/map/elements/item/blunderbass/blunderbass.element.yaml @@ -0,0 +1,4 @@ +name: Blunderbass +category: Weapons +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/item/blunderbass/sproinger.ts b/assets/map/elements/item/blunderbass/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/blunderbass/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/cannon/cannon.element.yaml b/assets/map/elements/item/cannon/cannon.element.yaml new file mode 100644 index 0000000000..c1a53b802a --- /dev/null +++ b/assets/map/elements/item/cannon/cannon.element.yaml @@ -0,0 +1,4 @@ +name: Canon +category: Weapons +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/item/cannon/sproinger.ts b/assets/map/elements/item/cannon/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/cannon/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/crate/crate.element.yaml b/assets/map/elements/item/crate/crate.element.yaml new file mode 100644 index 0000000000..a546ff8855 --- /dev/null +++ b/assets/map/elements/item/crate/crate.element.yaml @@ -0,0 +1,4 @@ +name: Crate +category: Weapons +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/item/crate/sproinger.ts b/assets/map/elements/item/crate/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/crate/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/grenades/grenades.element.yaml b/assets/map/elements/item/grenades/grenades.element.yaml new file mode 100644 index 0000000000..cdaac718c9 --- /dev/null +++ b/assets/map/elements/item/grenades/grenades.element.yaml @@ -0,0 +1,4 @@ +name: Grenades +category: Weapons +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/item/grenades/sproinger.ts b/assets/map/elements/item/grenades/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/grenades/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/kick_bomb/explosion.atlas.yaml b/assets/map/elements/item/kick_bomb/explosion.atlas.yaml new file mode 100644 index 0000000000..703175da65 --- /dev/null +++ b/assets/map/elements/item/kick_bomb/explosion.atlas.yaml @@ -0,0 +1,4 @@ +image: ./explosion.png +tile_size: [144, 112] +rows: 1 +columns: 11 diff --git a/assets/textures/explosions/Medium(144x112).png b/assets/map/elements/item/kick_bomb/explosion.png similarity index 100% rename from assets/textures/explosions/Medium(144x112).png rename to assets/map/elements/item/kick_bomb/explosion.png diff --git a/assets/map/elements/item/kick_bomb/kick_bomb.atlas.yaml b/assets/map/elements/item/kick_bomb/kick_bomb.atlas.yaml new file mode 100644 index 0000000000..18201d40c0 --- /dev/null +++ b/assets/map/elements/item/kick_bomb/kick_bomb.atlas.yaml @@ -0,0 +1,4 @@ +image: ./kick_bomb.png +tile_size: [32, 63] +rows: 2 +columns: 3 diff --git a/assets/map/elements/item/kick_bomb/kick_bomb.element.yaml b/assets/map/elements/item/kick_bomb/kick_bomb.element.yaml new file mode 100644 index 0000000000..ee9f04b385 --- /dev/null +++ b/assets/map/elements/item/kick_bomb/kick_bomb.element.yaml @@ -0,0 +1,8 @@ +name: Kick Bomb +category: Weapons +scripts: + - ./kick_bomb_spawner.ts + - ./kick_bomb.ts +preload_assets: + - ./kick_bomb.atlas.yaml + - ./explosion.atlas.yaml \ No newline at end of file diff --git a/assets/textures/items/KickBomb(32x64).png b/assets/map/elements/item/kick_bomb/kick_bomb.png similarity index 100% rename from assets/textures/items/KickBomb(32x64).png rename to assets/map/elements/item/kick_bomb/kick_bomb.png diff --git a/assets/map/elements/item/kick_bomb/kick_bomb.ts b/assets/map/elements/item/kick_bomb/kick_bomb.ts new file mode 100644 index 0000000000..dbf6d9c22b --- /dev/null +++ b/assets/map/elements/item/kick_bomb/kick_bomb.ts @@ -0,0 +1,257 @@ +const scriptPath = Script.getInfo().path; + +type LitBombState = { + frames: number; +}; +type ScriptState = { + litBombs: JsEntity[]; +}; +const scriptState = Script.state({ + litBombs: [], +}); + +export default { + preUpdateInGame() { + // Hydrate newly spawned sword items + const names = world.query(EntityName); + const items = world.query(Item); + for (const { entity, components } of items) { + const [item] = components; + + // If this is one of our items without a name + if (item.script == scriptPath && !names.get(entity)) { + // Hydrate the entity + world.insert(entity, Value.create(EntityName, ["Item: Kick Bomb"])); + + // Add the animated sprite + world.insert( + entity, + Value.create(AnimatedSprite, { + start: 0, + end: 5, + repeat: false, + fps: 0, + atlas: { + id: Assets.getHandleId("kick_bomb.atlas.yaml"), + }, + }) + ); + // And the kinematic body + world.insert( + entity, + Value.create(KinematicBody, { + size: { + x: 26, + y: 26, + }, + gravity: 1, + has_friction: true, + has_mass: true, + }) + ); + } + } + }, + + updateInGame() { + const players = world.query( + AnimatedSprite, + Transform, + PlayerIdx, + GlobalTransform, + ComputedVisibility + ); + const parents = world.query(Parent); + const items = world.query( + Item, + Transform, + KinematicBody, + AnimatedSprite, + GlobalTransform + ); + const transforms = world.query( + Transform, + GlobalTransform, + Visibility, + ComputedVisibility + ); + + // Update items that are being held + // + // This section will make the item follow the player around and match the player's facing + // direction. + for (const { entity: itemEnt, components } of items) { + const [item, itemTransform, body, sprite] = components; + if (item.script != scriptPath) continue; + + let parentComponents = parents.get(itemEnt); + // If this item isn't being held, skip the item + if (!parentComponents) continue; + + const [parent] = parentComponents; + const [playerSprite] = players.get(parent[0]); + + // Deactivate item collision + body.is_deactivated = true; + + // Set animation to default position if we are being held + sprite.index = 0; + + // Flip the sprite to match our player orientation + const flip = playerSprite.flip_x; + sprite.flip_x = flip; + const flipFactor = flip ? -1 : 1; + // Align the sprite with the player's position + itemTransform.translation = Value.create(Vec3, { + x: 13 * flipFactor, + y: 0, + }); + } + + // For every item that is being used + for (const event of Items.useEvents()) { + let parentComponents = parents.get(event.item); + // If this item isn't being held, skip the item + if (!parentComponents) continue; + + // Get the player info + const [parent] = parentComponents; + const [ + playerSprite, + transform, + _idx, + globalTransform, + computedVisibility, + ] = players.get(parent[0]); + const flip = playerSprite.flip_x; + const flipFactor = flip ? -1 : 1; + + // Despawn the item from the player's hand + WorldTemp.despawnRecursive(event.item); + + // Spawn a new, lit bomb to the map + const entity = world.spawn(); + scriptState.litBombs.push(EntityRef.toJs(entity)); + world.insert(entity, transform); + world.insert(entity, globalTransform); + world.insert(entity, computedVisibility); + world.insert(entity, Value.create(Visibility)); + + // Add the animated sprite + world.insert( + entity, + Value.create(AnimatedSprite, { + start: 3, + end: 5, + repeat: true, + fps: 8, + atlas: { + id: Assets.getHandleId("kick_bomb.atlas.yaml"), + }, + }) + ); + // And the kinematic body + world.insert( + entity, + Value.create(KinematicBody, { + size: { + x: 26, + y: 26, + }, + velocity: { + x: 10 * flipFactor, + }, + gravity: 1, + has_friction: true, + has_mass: true, + }) + ); + } + + // Handle lit bombs + const litBombs = scriptState.litBombs; + scriptState.litBombs = []; + for (const jsEntity of litBombs) { + const bombEntity = EntityRef.fromJs(jsEntity); + + // Get the bomb's state + const state = Script.getEntityState(bombEntity, { + frames: 0, + }); + const [transform, globalTransform, visibility, computedVisibility] = + transforms.get(bombEntity); + + if (state.frames >= 60) { + // Spawn damage region entity + const damageRegionEnt = world.spawn(); + world.insert(damageRegionEnt, transform); + world.insert(damageRegionEnt, globalTransform); + world.insert(damageRegionEnt, visibility); + world.insert(damageRegionEnt, computedVisibility); + world.insert( + damageRegionEnt, + Value.create(DamageRegion, { + size: { + x: 26 * 3.5, + y: 26 * 3.5, + }, + }) + ); + world.insert( + damageRegionEnt, + Value.create(Lifetime, { + lifetime: 1 / 9 * 4, + }) + ); + // Spawn explosion sprite entity + const explosionSpriteEnt = world.spawn(); + world.insert(explosionSpriteEnt, transform); + world.insert(explosionSpriteEnt, globalTransform); + world.insert(explosionSpriteEnt, visibility); + world.insert(explosionSpriteEnt, computedVisibility); + world.insert( + explosionSpriteEnt, + Value.create(AnimatedSprite, { + start: 0, + end: 11, + repeat: false, + fps: 9, + atlas: { + id: Assets.getHandleId("explosion.atlas.yaml"), + }, + }) + ); + world.insert( + explosionSpriteEnt, + Value.create(Lifetime, { + lifetime: 1 / 9 * 11, + }) + ); + + // Despawn the lit bomb + WorldTemp.despawnRecursive(bombEntity); + } else { + state.frames += 1; + scriptState.litBombs.push(jsEntity); + } + } + + // Update dropped items + for (const event of Items.dropEvents()) { + const [_item, itemTransform, body, sprite] = items.get(event.item); + let flip = sprite.flip_x; + let flipFactor = flip ? -1 : 1; + + // Re-activate physics body on the item + body.is_deactivated = false; + // Make sure item maintains player velocity + body.velocity = event.velocity; + body.is_spawning = true; + + // Drop item at the middle of the player + itemTransform.translation.y = event.position.y; + itemTransform.translation.x = event.position.x + 13 * flipFactor; + itemTransform.translation.z = event.position.z; + } + }, +}; diff --git a/assets/map/elements/item/kick_bomb/kick_bomb_spawner.ts b/assets/map/elements/item/kick_bomb/kick_bomb_spawner.ts new file mode 100644 index 0000000000..993455b857 --- /dev/null +++ b/assets/map/elements/item/kick_bomb/kick_bomb_spawner.ts @@ -0,0 +1,28 @@ +export default { + preUpdate() { + // Clients may not spawn items + if (NetInfo.get().is_client) return; + + const spawnedEntities = MapElement.getSpawnedEntities(); + + // Handle newly spawned map entities + for (const spanwer_entity of spawnedEntities) { + const [transform, global_transform, computed_visibility] = world + .query(Transform, GlobalTransform, ComputedVisibility) + .get(spanwer_entity); + + // Spawn a new entity for the bomb item and copy the transform from the map element + const entity = world.spawn(); + world.insert( + entity, + Value.create(Item, { + script: Assets.getAbsolutePath("kick_bomb.ts"), + }) + ); + world.insert(entity, transform); + world.insert(entity, global_transform); + world.insert(entity, computed_visibility); + world.insert(entity, Value.create(Visibility)); + } + }, +}; diff --git a/assets/map/elements/item/machine_gun/machine_gun.element.yaml b/assets/map/elements/item/machine_gun/machine_gun.element.yaml new file mode 100644 index 0000000000..a9d409eea8 --- /dev/null +++ b/assets/map/elements/item/machine_gun/machine_gun.element.yaml @@ -0,0 +1,4 @@ +name: Machine Gun +category: Weapons +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/item/machine_gun/sproinger.ts b/assets/map/elements/item/machine_gun/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/machine_gun/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/mines/mines.element.yaml b/assets/map/elements/item/mines/mines.element.yaml new file mode 100644 index 0000000000..1f2ecac688 --- /dev/null +++ b/assets/map/elements/item/mines/mines.element.yaml @@ -0,0 +1,4 @@ +name: Mines +category: Weapons +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/item/mines/sproinger.ts b/assets/map/elements/item/mines/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/mines/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/musket/musket.element.yaml b/assets/map/elements/item/musket/musket.element.yaml new file mode 100644 index 0000000000..e0917b5f8d --- /dev/null +++ b/assets/map/elements/item/musket/musket.element.yaml @@ -0,0 +1,4 @@ +name: Musket +category: Weapons +scripts: + - ./musket.ts diff --git a/assets/map/elements/item/musket/musket.ts b/assets/map/elements/item/musket/musket.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/musket/musket.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/sniper_rifle/sniper_rifle.element.yaml b/assets/map/elements/item/sniper_rifle/sniper_rifle.element.yaml new file mode 100644 index 0000000000..2985d0bf15 --- /dev/null +++ b/assets/map/elements/item/sniper_rifle/sniper_rifle.element.yaml @@ -0,0 +1,4 @@ +name: Sniper Rifle +category: Weapons +scripts: + - ./sproinger.ts diff --git a/assets/map/elements/item/sniper_rifle/sproinger.ts b/assets/map/elements/item/sniper_rifle/sproinger.ts new file mode 100644 index 0000000000..56004c9f9e --- /dev/null +++ b/assets/map/elements/item/sniper_rifle/sproinger.ts @@ -0,0 +1 @@ +export default {} \ No newline at end of file diff --git a/assets/map/elements/item/sword/sword.atlas.yaml b/assets/map/elements/item/sword/sword.atlas.yaml new file mode 100644 index 0000000000..3232aa133c --- /dev/null +++ b/assets/map/elements/item/sword/sword.atlas.yaml @@ -0,0 +1,4 @@ +image: ./sword.png +tile_size: [65, 93] +rows: 4 +columns: 4 diff --git a/assets/map/elements/item/sword/sword.element.yaml b/assets/map/elements/item/sword/sword.element.yaml new file mode 100644 index 0000000000..cad9647d32 --- /dev/null +++ b/assets/map/elements/item/sword/sword.element.yaml @@ -0,0 +1,7 @@ +name: Sword +category: Weapons +scripts: + - ./sword_spawner.ts + - ./sword.ts +preload_assets: + - ./sword.atlas.yaml diff --git a/assets/textures/items/Sword(65x93).png b/assets/map/elements/item/sword/sword.png similarity index 100% rename from assets/textures/items/Sword(65x93).png rename to assets/map/elements/item/sword/sword.png diff --git a/assets/map/elements/item/sword/sword.ts b/assets/map/elements/item/sword/sword.ts new file mode 100644 index 0000000000..1265afc97d --- /dev/null +++ b/assets/map/elements/item/sword/sword.ts @@ -0,0 +1,249 @@ +const scriptPath = Script.getInfo().path; + +type Idle = { status: "idle" }; +type Swinging = { status: "swinging"; frame: number }; +type Cooldown = { status: "cooldown"; frame: number }; +type ItemState = Idle | Swinging | Cooldown; +const itemStateInit: ItemState = { status: "idle" }; + +const COOLDOWN_FRAMES = 15; +const ATTACK_FPS = 10; + +export default { + preUpdateInGame() { + // Hydrate newly spawned sword items + const names = world.query(EntityName); + const items = world.query(Item); + for (const { entity, components } of items) { + const [item] = components; + + // If this is one of our items without a name + if (item.script == scriptPath && !names.get(entity)) { + // Hydrate the entity + world.insert(entity, Value.create(EntityName, ["Item: Sword"])); + + // Add the animated sprite + world.insert( + entity, + Value.create(AnimatedSprite, { + start: 0, + end: 0, + repeat: false, + fps: ATTACK_FPS, + atlas: { + id: Assets.getHandleId("sword.atlas.yaml"), + }, + }) + ); + // And the kinematic body + world.insert( + entity, + Value.create(KinematicBody, { + size: { + x: 64, + y: 16, + }, + offset: { + y: 38, + }, + gravity: 1, + has_friction: true, + has_mass: true, + }) + ); + } + } + }, + + updateInGame() { + const players = world.query(AnimatedSprite, Transform, PlayerIdx); + const parents = world.query(Parent); + const items = world.query( + Item, + Transform, + KinematicBody, + AnimatedSprite, + GlobalTransform, + ); + + // Helper to spawn a damage region + const spawnDamageRegion = ( + owner: Entity, + x: number, + y: number, + width: number, + height: number + ) => { + /// This is a hack to get a global transform because scripts can't construct it with + /// Value.create(). ( Fixed in Bevy 0.9 ) + const globalTransform = items[0].components[3]; + + // Spawn damage region entity + let entity = world.spawn(); + world.insert( + entity, + Value.create(Transform, { + translation: { + x, + y, + }, + }) + ); + world.insert(entity, globalTransform); + world.insert( + entity, + Value.create(DamageRegion, { + size: { + x: width, + y: height, + }, + }) + ); + world.insert(entity, Value.create(DamageRegionOwner, [owner])); + world.insert( + entity, + Value.create(Lifetime, { + lifetime: 1 / 60, + }) + ); + }; + + // Update items that are being held + // + // This section will make the item follow the player around and match the player's facing + // direction. + for (const { entity: itemEnt, components } of items) { + const [item, itemTransform, body, sprite] = components; + if (item.script != scriptPath) continue; + + const state = Script.getEntityState(itemEnt, itemStateInit); + + let parentComponents = parents.get(itemEnt); + // If this item isn't being held, skip the item + if (!parentComponents) continue; + + const [parent] = parentComponents; + const [playerSprite, playerTransform] = players.get(parent[0]); + + // Deactivate item collision + body.is_deactivated = true; + + // Set animation to default position if we aren't swinging + if (state.status != "swinging") { + sprite.start = 4; + sprite.end = 4; + sprite.index = 0; + sprite.repeat = false; + } + + // Flip the sprite to match our player orientation + const flip = playerSprite.flip_x; + sprite.flip_x = flip; + const flipFactor = flip ? -1 : 1; + // Align the sprite with the player's position + itemTransform.translation = Value.create(Vec3, { + x: 13 * (flip ? -1 : 1), + y: 21, + }); + + // If we're swinging the weapon + if (state.status == "swinging") { + // If we are at the end of the swing animation + if (sprite.index >= sprite.end - sprite.start - 1) { + // Go to cooldown frames + Script.setEntityState(itemEnt, { + status: "cooldown", + frame: 0, + }); + + // Set the current attack frame to the animation frame index + } else { + state.frame = sprite.index; + } + + // Trigger frame collisions for each sword animation position + switch (state.frame) { + case 0: + spawnDamageRegion( + parent[0], + playerTransform.translation.x + 20 * flipFactor, + playerTransform.translation.y + 20, + 30, + 70 + ); + break; + case 1: + spawnDamageRegion( + parent[0], + playerTransform.translation.x + 25 * flipFactor, + playerTransform.translation.y + 20, + 40, + 50 + ); + break; + case 2: + spawnDamageRegion( + parent[0], + playerTransform.translation.x + 20 * flipFactor, + playerTransform.translation.y, + 40, + 50 + ); + break; + } + + state.frame += 1; + + // If we are in cooldown frames + } else if (state.status == "cooldown") { + // If cooldown frames have finished + if (state.frame >= COOLDOWN_FRAMES) { + // Go back to idle state + Script.setEntityState(itemEnt, { status: "idle" }); + } else { + state.frame += 1; + } + } + } + + // For every item that is being used + for (const event of Items.useEvents()) { + // Get the current item state + const state = Script.getEntityState(event.item, itemStateInit); + + if (state.status == "idle") { + const [_item, _itemTransform, _body, sprite] = items.get(event.item); + + // Start attacking animation + sprite.index = 0; + sprite.start = 8; + sprite.end = 12; + + // And move to an attacking state + Script.setEntityState(event.item, { + status: "swinging", + frame: 0, + }); + } + } + + // Update dropped items + for (const event of Items.dropEvents()) { + const [_item, itemTransform, body, sprite] = items.get(event.item); + + // Re-activate physics body on the item + body.is_deactivated = false; + // Put sword in rest position + sprite.start = 0; + sprite.end = 0; + // Make sure item maintains player velocity + body.velocity = event.velocity; + body.is_spawning = true; + + // Drop item at the middle of the player + itemTransform.translation.y = event.position.y - 30; + itemTransform.translation.x = event.position.x; + itemTransform.translation.z = event.position.z; + } + }, +}; diff --git a/assets/map/elements/item/sword/sword_spawner.ts b/assets/map/elements/item/sword/sword_spawner.ts new file mode 100644 index 0000000000..469d1363d7 --- /dev/null +++ b/assets/map/elements/item/sword/sword_spawner.ts @@ -0,0 +1,28 @@ +export default { + preUpdate() { + // Clients may not spawn items + if (NetInfo.get().is_client) return; + + const spawnedEntities = MapElement.getSpawnedEntities(); + + // Handle newly spawned map entities + for (const spanwer_entity of spawnedEntities) { + const [transform, global_transform, computed_visibility] = world + .query(Transform, GlobalTransform, ComputedVisibility) + .get(spanwer_entity); + + // Spawn a new entity for the sword and copy the transform and visibility from the map element + const entity = world.spawn(); + world.insert( + entity, + Value.create(Item, { + script: Assets.getAbsolutePath("./sword.ts"), + }) + ); + world.insert(entity, transform); + world.insert(entity, global_transform); + world.insert(entity, computed_visibility); + world.insert(entity, Value.create(Visibility)); + } + }, +}; diff --git a/assets/map/levels/lev01.map.json b/assets/map/levels/lev01.map.json new file mode 100644 index 0000000000..8cf69f993f --- /dev/null +++ b/assets/map/levels/lev01.map.json @@ -0,0 +1,1889 @@ +{ + "name": "lev01", + "background_color": "7EA8A6", + "grid_size": [ + 27, + 21 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 8, + 17 + ], + "idx": 32 + }, + { + "pos": [ + 9, + 17 + ], + "idx": 34 + }, + { + "pos": [ + 17, + 17 + ], + "idx": 32 + }, + { + "pos": [ + 18, + 17 + ], + "idx": 34 + }, + { + "pos": [ + 25, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 8, + 16 + ], + "idx": 39 + }, + { + "pos": [ + 9, + 16 + ], + "idx": 40 + }, + { + "pos": [ + 10, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 11, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 12, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 13, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 14, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 16, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 17, + 16 + ], + "idx": 39 + }, + { + "pos": [ + 18, + 16 + ], + "idx": 41 + }, + { + "pos": [ + 25, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 15 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 7, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 15 + ], + "idx": 46 + }, + { + "pos": [ + 9, + 15 + ], + "idx": 48 + }, + { + "pos": [ + 17, + 15 + ], + "idx": 46 + }, + { + "pos": [ + 18, + 15 + ], + "idx": 48 + }, + { + "pos": [ + 19, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 15 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 25, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 14 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 24, + 14 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 25, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 11 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 3, + 11 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 4, + 11 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 5, + 11 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 21, + 11 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 22, + 11 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 23, + 11 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 24, + 11 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 25, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 10 + ], + "idx": 0 + }, + { + "pos": [ + 12, + 10 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 10 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 10 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 10 + ], + "idx": 2 + }, + { + "pos": [ + 25, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 12, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 7, + 8 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 8, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 10, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 11, + 8 + ], + "idx": 14 + }, + { + "pos": [ + 12, + 8 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 8 + ], + "idx": 15 + }, + { + "pos": [ + 14, + 8 + ], + "idx": 15 + }, + { + "pos": [ + 15, + 8 + ], + "idx": 16 + }, + { + "pos": [ + 16, + 8 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 17, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 8 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 25, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 20 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 40 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 40 + }, + { + "pos": [ + 4, + 5 + ], + "idx": 23 + }, + { + "pos": [ + 22, + 5 + ], + "idx": 21 + }, + { + "pos": [ + 23, + 5 + ], + "idx": 40 + }, + { + "pos": [ + 24, + 5 + ], + "idx": 40 + }, + { + "pos": [ + 25, + 5 + ], + "idx": 13 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 11 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 12 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 15 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 15 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 434.74872000000005, + 361.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 84.00005999999999, + 201.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 787.7431999999999, + 201.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 90.666664, + 121.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 776, + 121.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 672, + 121.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 192, + 121.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 448, + 121.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 437.2876, + 377.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 608, + 313.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 441.66668000000004, + 569.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 256, + 313.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 291.83331999999996, + 601.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 777.6371999999999, + 409.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 576, + 601.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 88, + 409.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 536, + 309.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 292.22720000000004, + 609.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 552, + 289.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 496, + 545.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 184, + 155.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 772.4570000000001, + 425.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 312.0556, + 311.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 132.024688, + 121.5 + ], + "element": "../elements/item/machine_gun/machine_gun.element.yaml" + }, + { + "pos": [ + 561, + 599.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 272, + 593.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 171.57139999999998, + 409.5 + ], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [ + 712, + 393.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 720.9998, + 121.5 + ], + "element": "../elements/item/cannon/cannon.element.yaml" + }, + { + "pos": [ + 312, + 105.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 576, + 105.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 268.33334, + 640 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 124.16667, + 224.50002999999998 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 701.74677, + 225.11905000000002 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 559.6667, + 640 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/lev02.map.json b/assets/map/levels/lev02.map.json new file mode 100644 index 0000000000..2c0e52501e --- /dev/null +++ b/assets/map/levels/lev02.map.json @@ -0,0 +1,1511 @@ +{ + "name": "lev02", + "background_color": "7EA8A6", + "grid_size": [ + 27, + 21 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 18 + ], + "idx": 14 + }, + { + "pos": [ + 7, + 18 + ], + "idx": 16 + }, + { + "pos": [ + 8, + 18 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 18 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 10, + 18 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 11, + 18 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 26, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 17, + 17 + ], + "idx": 0 + }, + { + "pos": [ + 18, + 17 + ], + "idx": 25 + }, + { + "pos": [ + 19, + 17 + ], + "idx": 40 + }, + { + "pos": [ + 20, + 17 + ], + "idx": 40 + }, + { + "pos": [ + 21, + 17 + ], + "idx": 40 + }, + { + "pos": [ + 22, + 17 + ], + "idx": 23 + }, + { + "pos": [ + 26, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 16, + 16 + ], + "idx": 0 + }, + { + "pos": [ + 17, + 16 + ], + "idx": 45 + }, + { + "pos": [ + 18, + 16 + ], + "idx": 16 + }, + { + "pos": [ + 26, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 2, + 15 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 3, + 15 + ], + "idx": 21 + }, + { + "pos": [ + 4, + 15 + ], + "idx": 40 + }, + { + "pos": [ + 5, + 15 + ], + "idx": 40 + }, + { + "pos": [ + 6, + 15 + ], + "idx": 40 + }, + { + "pos": [ + 7, + 15 + ], + "idx": 40 + }, + { + "pos": [ + 8, + 15 + ], + "idx": 40 + }, + { + "pos": [ + 9, + 15 + ], + "idx": 40 + }, + { + "pos": [ + 10, + 15 + ], + "idx": 23 + }, + { + "pos": [ + 14, + 15 + ], + "idx": 21 + }, + { + "pos": [ + 15, + 15 + ], + "idx": 40 + }, + { + "pos": [ + 16, + 15 + ], + "idx": 19 + }, + { + "pos": [ + 17, + 15 + ], + "idx": 16 + }, + { + "pos": [ + 24, + 15 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 25, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 2, + 12 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 23, + 12 + ], + "idx": 0 + }, + { + "pos": [ + 24, + 12 + ], + "idx": 1 + }, + { + "pos": [ + 25, + 12 + ], + "idx": 1 + }, + { + "pos": [ + 26, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 11 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 11 + ], + "idx": 4 + }, + { + "pos": [ + 25, + 11 + ], + "idx": 5 + }, + { + "pos": [ + 26, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 10 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 10 + ], + "idx": 11 + }, + { + "pos": [ + 25, + 10 + ], + "idx": 12 + }, + { + "pos": [ + 26, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 2, + 9 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 17, + 9 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 18, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 9 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 23, + 9 + ], + "idx": 39 + }, + { + "pos": [ + 24, + 9 + ], + "idx": 40 + }, + { + "pos": [ + 25, + 9 + ], + "idx": 13 + }, + { + "pos": [ + 26, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 8 + ], + "idx": 4 + }, + { + "pos": [ + 25, + 8 + ], + "idx": 5 + }, + { + "pos": [ + 26, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 12, + 7 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 13, + 7 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 14, + 7 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 23, + 7 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 7 + ], + "idx": 11 + }, + { + "pos": [ + 25, + 7 + ], + "idx": 12 + }, + { + "pos": [ + 26, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 2, + 6 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 23, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 6 + ], + "idx": 40 + }, + { + "pos": [ + 25, + 6 + ], + "idx": 13 + }, + { + "pos": [ + 26, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 5 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 7, + 5 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 5 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 5 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 23, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 5 + ], + "idx": 4 + }, + { + "pos": [ + 25, + 5 + ], + "idx": 5 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 22, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 11 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 12 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 2 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 21, + 3 + ], + "idx": 28 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 29 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 39 + }, + { + "pos": [ + 24, + 3 + ], + "idx": 40 + }, + { + "pos": [ + 25, + 3 + ], + "idx": 13 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 0 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 2 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 0 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 2 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 4 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 5 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 28 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 29 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 28 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 29 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 11 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 12 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 11 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 2 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 5, + 0 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 0 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 10, + 0 + ], + "idx": 0 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 2 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 35 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 36 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 0 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 2 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 39 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 40 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 13 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 7 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 792, + 441.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 56, + 153.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 238.5, + 537.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 480, + 537.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 709.8334, + 185.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 272, + 217.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 517.09736, + 121.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 56, + 345.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 593.0972999999999, + 345.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 654.43066, + 601.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 828.2152000000001, + 535.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 432, + 265.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 629.8823199999999, + 585.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 154.72724, + 521.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 272, + 231.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 794.5715399999999, + 441.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 232.00011999999998, + 545.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 600, + 593.5 + ], + "element": "../elements/item/sniper_rifle/sniper_rifle.element.yaml" + }, + { + "pos": [ + 64, + 425.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 592, + 349.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 230.33337999999998, + 209.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 727.3334, + 169.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 162.37097999999997, + 49.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 423.3406, + 283.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 296, + 617.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 98.210815, + 149.42273 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 271.61115, + 538.24544 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 787.6791, + 444.16577 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 650.2078, + 181.11685 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/lev03.map.json b/assets/map/levels/lev03.map.json new file mode 100644 index 0000000000..f0ec82174f --- /dev/null +++ b/assets/map/levels/lev03.map.json @@ -0,0 +1,6137 @@ +{ + "name": "lev03", + "background_color": "7EA8A6", + "grid_size": [ + 35, + 35 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 34 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 34 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 34 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 33 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 33 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 33 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 32 + ], + "idx": 4 + }, + { + "pos": [ + 6, + 32 + ], + "idx": 5 + }, + { + "pos": [ + 7, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 32 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 32 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 32 + ], + "idx": 4 + }, + { + "pos": [ + 26, + 32 + ], + "idx": 5 + }, + { + "pos": [ + 27, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 32 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 31 + ], + "idx": 11 + }, + { + "pos": [ + 6, + 31 + ], + "idx": 12 + }, + { + "pos": [ + 7, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 31 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 31 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 31 + ], + "idx": 11 + }, + { + "pos": [ + 26, + 31 + ], + "idx": 12 + }, + { + "pos": [ + 27, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 31 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 30 + ], + "idx": 4 + }, + { + "pos": [ + 10, + 30 + ], + "idx": 5 + }, + { + "pos": [ + 11, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 30 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 30 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 30 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 29 + ], + "idx": 11 + }, + { + "pos": [ + 10, + 29 + ], + "idx": 12 + }, + { + "pos": [ + 11, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 29 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 29 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 29 + ], + "idx": 4 + }, + { + "pos": [ + 33, + 29 + ], + "idx": 5 + }, + { + "pos": [ + 34, + 29 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 28 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 28 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 28 + ], + "idx": 11 + }, + { + "pos": [ + 33, + 28 + ], + "idx": 12 + }, + { + "pos": [ + 34, + 28 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 27 + ], + "idx": 4 + }, + { + "pos": [ + 6, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 7, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 8, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 9, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 10, + 27 + ], + "idx": 27 + }, + { + "pos": [ + 11, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 12, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 27 + ], + "idx": 16 + }, + { + "pos": [ + 21, + 27 + ], + "idx": 14 + }, + { + "pos": [ + 22, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 23, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 24, + 27 + ], + "idx": 27 + }, + { + "pos": [ + 25, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 26, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 27, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 28, + 27 + ], + "idx": 15 + }, + { + "pos": [ + 29, + 27 + ], + "idx": 5 + }, + { + "pos": [ + 30, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 27 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 26 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 26 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 26 + ], + "idx": 10 + }, + { + "pos": [ + 25, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 26 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 26 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 25 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 25 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 25 + ], + "idx": 10 + }, + { + "pos": [ + 25, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 25 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 24 + ], + "idx": 4 + }, + { + "pos": [ + 3, + 24 + ], + "idx": 5 + }, + { + "pos": [ + 4, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 24 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 24 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 24 + ], + "idx": 10 + }, + { + "pos": [ + 25, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 24 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 23 + ], + "idx": 11 + }, + { + "pos": [ + 3, + 23 + ], + "idx": 12 + }, + { + "pos": [ + 4, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 23 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 23 + ], + "idx": 10 + }, + { + "pos": [ + 24, + 23 + ], + "idx": 10 + }, + { + "pos": [ + 25, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 23 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 22 + ], + "idx": 20 + }, + { + "pos": [ + 6, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 22 + ], + "idx": 48 + }, + { + "pos": [ + 24, + 22 + ], + "idx": 46 + }, + { + "pos": [ + 25, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 26, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 27, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 28, + 22 + ], + "idx": 22 + }, + { + "pos": [ + 29, + 22 + ], + "idx": 13 + }, + { + "pos": [ + 30, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 21 + ], + "idx": 9 + }, + { + "pos": [ + 16, + 21 + ], + "idx": 0 + }, + { + "pos": [ + 17, + 21 + ], + "idx": 3 + }, + { + "pos": [ + 18, + 21 + ], + "idx": 2 + }, + { + "pos": [ + 29, + 21 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 15, + 20 + ], + "idx": 0 + }, + { + "pos": [ + 16, + 20 + ], + "idx": 12 + }, + { + "pos": [ + 17, + 20 + ], + "idx": 10 + }, + { + "pos": [ + 18, + 20 + ], + "idx": 11 + }, + { + "pos": [ + 19, + 20 + ], + "idx": 2 + }, + { + "pos": [ + 29, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 14, + 19 + ], + "idx": 0 + }, + { + "pos": [ + 15, + 19 + ], + "idx": 12 + }, + { + "pos": [ + 16, + 19 + ], + "idx": 4 + }, + { + "pos": [ + 17, + 19 + ], + "idx": 10 + }, + { + "pos": [ + 18, + 19 + ], + "idx": 5 + }, + { + "pos": [ + 19, + 19 + ], + "idx": 11 + }, + { + "pos": [ + 20, + 19 + ], + "idx": 2 + }, + { + "pos": [ + 29, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 18 + ], + "idx": 0 + }, + { + "pos": [ + 14, + 18 + ], + "idx": 12 + }, + { + "pos": [ + 15, + 18 + ], + "idx": 4 + }, + { + "pos": [ + 16, + 18 + ], + "idx": 44 + }, + { + "pos": [ + 17, + 18 + ], + "idx": 6 + }, + { + "pos": [ + 18, + 18 + ], + "idx": 45 + }, + { + "pos": [ + 19, + 18 + ], + "idx": 5 + }, + { + "pos": [ + 20, + 18 + ], + "idx": 11 + }, + { + "pos": [ + 21, + 18 + ], + "idx": 2 + }, + { + "pos": [ + 29, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 17 + ], + "idx": 56 + }, + { + "pos": [ + 7, + 17 + ], + "idx": 58 + }, + { + "pos": [ + 8, + 17 + ], + "idx": 58 + }, + { + "pos": [ + 9, + 17 + ], + "idx": 58 + }, + { + "pos": [ + 10, + 17 + ], + "idx": 21 + }, + { + "pos": [ + 11, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 17 + ], + "idx": 13 + }, + { + "pos": [ + 17, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 17 + ], + "idx": 20 + }, + { + "pos": [ + 19, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 21, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 17 + ], + "idx": 23 + }, + { + "pos": [ + 25, + 17 + ], + "idx": 58 + }, + { + "pos": [ + 26, + 17 + ], + "idx": 58 + }, + { + "pos": [ + 27, + 17 + ], + "idx": 58 + }, + { + "pos": [ + 28, + 17 + ], + "idx": 60 + }, + { + "pos": [ + 29, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 16 + ], + "idx": 14 + }, + { + "pos": [ + 14, + 16 + ], + "idx": 5 + }, + { + "pos": [ + 15, + 16 + ], + "idx": 11 + }, + { + "pos": [ + 16, + 16 + ], + "idx": 45 + }, + { + "pos": [ + 17, + 16 + ], + "idx": 27 + }, + { + "pos": [ + 18, + 16 + ], + "idx": 44 + }, + { + "pos": [ + 19, + 16 + ], + "idx": 12 + }, + { + "pos": [ + 20, + 16 + ], + "idx": 4 + }, + { + "pos": [ + 21, + 16 + ], + "idx": 16 + }, + { + "pos": [ + 29, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 15 + ], + "idx": 4 + }, + { + "pos": [ + 2, + 15 + ], + "idx": 5 + }, + { + "pos": [ + 3, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 14, + 15 + ], + "idx": 14 + }, + { + "pos": [ + 15, + 15 + ], + "idx": 5 + }, + { + "pos": [ + 16, + 15 + ], + "idx": 11 + }, + { + "pos": [ + 17, + 15 + ], + "idx": 10 + }, + { + "pos": [ + 18, + 15 + ], + "idx": 12 + }, + { + "pos": [ + 19, + 15 + ], + "idx": 4 + }, + { + "pos": [ + 20, + 15 + ], + "idx": 16 + }, + { + "pos": [ + 29, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 15 + ], + "idx": 4 + }, + { + "pos": [ + 33, + 15 + ], + "idx": 5 + }, + { + "pos": [ + 34, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 14 + ], + "idx": 11 + }, + { + "pos": [ + 2, + 14 + ], + "idx": 12 + }, + { + "pos": [ + 3, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 15, + 14 + ], + "idx": 14 + }, + { + "pos": [ + 16, + 14 + ], + "idx": 5 + }, + { + "pos": [ + 17, + 14 + ], + "idx": 10 + }, + { + "pos": [ + 18, + 14 + ], + "idx": 4 + }, + { + "pos": [ + 19, + 14 + ], + "idx": 16 + }, + { + "pos": [ + 29, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 14 + ], + "idx": 11 + }, + { + "pos": [ + 33, + 14 + ], + "idx": 12 + }, + { + "pos": [ + 34, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 13 + ], + "idx": 20 + }, + { + "pos": [ + 6, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 7, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 8, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 9, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 10, + 13 + ], + "idx": 60 + }, + { + "pos": [ + 16, + 13 + ], + "idx": 14 + }, + { + "pos": [ + 17, + 13 + ], + "idx": 17 + }, + { + "pos": [ + 18, + 13 + ], + "idx": 16 + }, + { + "pos": [ + 24, + 13 + ], + "idx": 56 + }, + { + "pos": [ + 25, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 26, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 27, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 28, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 29, + 13 + ], + "idx": 13 + }, + { + "pos": [ + 30, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 9 + ], + "idx": 20 + }, + { + "pos": [ + 6, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 9 + ], + "idx": 34 + }, + { + "pos": [ + 10, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 11, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 12, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 13, + 9 + ], + "idx": 60 + }, + { + "pos": [ + 21, + 9 + ], + "idx": 56 + }, + { + "pos": [ + 22, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 23, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 24, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 25, + 9 + ], + "idx": 32 + }, + { + "pos": [ + 26, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 27, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 28, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 29, + 9 + ], + "idx": 13 + }, + { + "pos": [ + 30, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 25, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 26, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 7 + ], + "idx": 11 + }, + { + "pos": [ + 6, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 7 + ], + "idx": 6 + }, + { + "pos": [ + 10, + 7 + ], + "idx": 2 + }, + { + "pos": [ + 24, + 7 + ], + "idx": 0 + }, + { + "pos": [ + 25, + 7 + ], + "idx": 6 + }, + { + "pos": [ + 26, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 27, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 28, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 29, + 7 + ], + "idx": 12 + }, + { + "pos": [ + 30, + 7 + ], + "idx": 4 + }, + { + "pos": [ + 31, + 7 + ], + "idx": 5 + }, + { + "pos": [ + 32, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 6 + ], + "idx": 4 + }, + { + "pos": [ + 7, + 6 + ], + "idx": 5 + }, + { + "pos": [ + 8, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 24, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 25, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 6 + ], + "idx": 11 + }, + { + "pos": [ + 31, + 6 + ], + "idx": 12 + }, + { + "pos": [ + 32, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 5 + ], + "idx": 11 + }, + { + "pos": [ + 7, + 5 + ], + "idx": 12 + }, + { + "pos": [ + 8, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 5 + ], + "idx": 11 + }, + { + "pos": [ + 11, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 5 + ], + "idx": 2 + }, + { + "pos": [ + 20, + 5 + ], + "idx": 0 + }, + { + "pos": [ + 21, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 24, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 25, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 3 + ], + "idx": 4 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 5 + }, + { + "pos": [ + 27, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 4 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 5 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 11 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 12 + }, + { + "pos": [ + 27, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 11 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 12 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 0 + ], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 720, + 217.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 808.5, + 345.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 266.5, + 473.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 896, + 761.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 560, + 729.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 832, + 761.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 288, + 761.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 407.33331999999996, + 217.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 395.16668000000004, + 601.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 880, + 601.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 224, + 761.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 800, + 273.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 248.51263999999998, + 329.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 872, + 337.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 376, + 641.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 808, + 587.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 256, + 481.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 249.27784000000003, + 801.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 869.5455400000001, + 793.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 792, + 377.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 543.6886, + 713.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 552, + 745.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 450.66668000000004, + 249.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 301.33331999999996, + 623.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 896, + 625.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 746.6666, + 257.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 255.66667, + 351.3333 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 367.83334, + 611.83334 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 864.6515, + 352.1667 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 751, + 608.33334 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/lev04.map.json b/assets/map/levels/lev04.map.json new file mode 100644 index 0000000000..34a5cc6e45 --- /dev/null +++ b/assets/map/levels/lev04.map.json @@ -0,0 +1,1885 @@ +{ + "name": "lev04", + "background_color": "7EA8A6", + "grid_size": [ + 35, + 15 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 9, + 12 + ], + "idx": 32 + }, + { + "pos": [ + 10, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 11, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 12 + ], + "idx": 23 + }, + { + "pos": [ + 13, + 12 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 14, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 16, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 17, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 21, + 12 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 22, + 12 + ], + "idx": 21 + }, + { + "pos": [ + 23, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 12 + ], + "idx": 34 + }, + { + "pos": [ + 33, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 9, + 11 + ], + "idx": 17 + }, + { + "pos": [ + 25, + 11 + ], + "idx": 17 + }, + { + "pos": [ + 33, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 20 + }, + { + "pos": [ + 33, + 10 + ], + "idx": 13 + }, + { + "pos": [ + 34, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 3, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 4, + 9 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 30, + 9 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 31, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 32, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 33, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 14, + 7 + ], + "idx": 0 + }, + { + "pos": [ + 15, + 7 + ], + "idx": 45 + }, + { + "pos": [ + 16, + 7 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 17, + 7 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 7 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 7 + ], + "idx": 44 + }, + { + "pos": [ + 20, + 7 + ], + "idx": 2 + }, + { + "pos": [ + 33, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 20 + }, + { + "pos": [ + 2, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 3, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 4, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 5, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 6, + 6 + ], + "idx": 23 + }, + { + "pos": [ + 13, + 6 + ], + "idx": 0 + }, + { + "pos": [ + 14, + 6 + ], + "idx": 45 + }, + { + "pos": [ + 15, + 6 + ], + "idx": 16 + }, + { + "pos": [ + 19, + 6 + ], + "idx": 14 + }, + { + "pos": [ + 20, + 6 + ], + "idx": 44 + }, + { + "pos": [ + 21, + 6 + ], + "idx": 2 + }, + { + "pos": [ + 28, + 6 + ], + "idx": 21 + }, + { + "pos": [ + 29, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 30, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 31, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 32, + 6 + ], + "idx": 22 + }, + { + "pos": [ + 33, + 6 + ], + "idx": 13 + }, + { + "pos": [ + 34, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 12, + 5 + ], + "idx": 0 + }, + { + "pos": [ + 13, + 5 + ], + "idx": 45 + }, + { + "pos": [ + 14, + 5 + ], + "idx": 16 + }, + { + "pos": [ + 20, + 5 + ], + "idx": 14 + }, + { + "pos": [ + 21, + 5 + ], + "idx": 44 + }, + { + "pos": [ + 22, + 5 + ], + "idx": 2 + }, + { + "pos": [ + 33, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 12, + 4 + ], + "idx": 45 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 16 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 14 + }, + { + "pos": [ + 22, + 4 + ], + "idx": 44 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 33, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 3 + ], + "idx": 14 + }, + { + "pos": [ + 12, + 3 + ], + "idx": 16 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 14 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 16 + }, + { + "pos": [ + 33, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 34, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 4 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 37 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 33 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 33 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 33 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 33 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 33 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 27, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 28, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 29, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 30, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 31, + 2 + ], + "idx": 22 + }, + { + "pos": [ + 32, + 2 + ], + "idx": 33 + }, + { + "pos": [ + 33, + 2 + ], + "idx": 38 + }, + { + "pos": [ + 34, + 2 + ], + "idx": 5 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 11 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 12 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 3 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 20 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 13 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 3 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 27 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 1 + ], + "idx": 3 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 3 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 1 + ], + "idx": 27 + }, + { + "pos": [ + 30, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 1 + ], + "idx": 3 + }, + { + "pos": [ + 33, + 1 + ], + "idx": 11 + }, + { + "pos": [ + 34, + 1 + ], + "idx": 12 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 6 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 20 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 13 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 0 + ], + "idx": 6 + }, + { + "pos": [ + 30, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 33, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 34, + 0 + ], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 984.5712799999999, + 247.5 + ], + "element": "../elements/item/sniper_rifle/sniper_rifle.element.yaml" + }, + { + "pos": [ + 107.42859999999999, + 225.5 + ], + "element": "../elements/item/blunderbass/blunderbass.element.yaml" + }, + { + "pos": [ + 560, + 271.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 480, + 427.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 888, + 139.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 88, + 353.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 896, + 121.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 496, + 121.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 1000, + 121.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 288, + 121.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 112, + 121.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 736.3635999999999, + 441.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 96, + 345.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 328, + 441.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 968, + 257.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 120.40002000000001, + 129.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [ + 1024, + 137.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [ + 111.40014, + 337.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [ + 1043.9714, + 329.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [ + 392, + 433.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [ + 677.2236, + 433.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [ + 616, + 111.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 808, + 463.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 536.1025999999999, + 441.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 884, + 145.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 277.7143, + 121.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 800, + 425.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 564.9702, + 105.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 176.83333, + 120.83334000000002 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 947, + 119.33334000000002 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 137.42857, + 346.71428000000003 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 973.857, + 347.85715 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/lev05.map.json b/assets/map/levels/lev05.map.json new file mode 100644 index 0000000000..f676429f07 --- /dev/null +++ b/assets/map/levels/lev05.map.json @@ -0,0 +1,1748 @@ +{ + "name": "lev05", + "background_color": "7EA8A6", + "grid_size": [ + 45, + 15 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 9, + 12 + ], + "idx": 56 + }, + { + "pos": [ + 10, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 11, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 12, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 13, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 14, + 12 + ], + "idx": 60 + }, + { + "pos": [ + 15, + 12 + ], + "idx": 21 + }, + { + "pos": [ + 16, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 12 + ], + "idx": 34 + }, + { + "pos": [ + 25, + 12 + ], + "idx": 32 + }, + { + "pos": [ + 26, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 27, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 28, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 29, + 12 + ], + "idx": 23 + }, + { + "pos": [ + 30, + 12 + ], + "idx": 56 + }, + { + "pos": [ + 31, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 32, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 33, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 34, + 12 + ], + "idx": 58 + }, + { + "pos": [ + 35, + 12 + ], + "idx": 60 + }, + { + "pos": [ + 17, + 11 + ], + "idx": 14 + }, + { + "pos": [ + 18, + 11 + ], + "idx": 5 + }, + { + "pos": [ + 19, + 11 + ], + "idx": 10 + }, + { + "pos": [ + 25, + 11 + ], + "idx": 10 + }, + { + "pos": [ + 26, + 11 + ], + "idx": 4 + }, + { + "pos": [ + 27, + 11 + ], + "idx": 16 + }, + { + "pos": [ + 2, + 10 + ], + "idx": 0 + }, + { + "pos": [ + 3, + 10 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 10 + ], + "idx": 2 + }, + { + "pos": [ + 18, + 10 + ], + "idx": 14 + }, + { + "pos": [ + 19, + 10 + ], + "idx": 10 + }, + { + "pos": [ + 25, + 10 + ], + "idx": 10 + }, + { + "pos": [ + 26, + 10 + ], + "idx": 16 + }, + { + "pos": [ + 40, + 10 + ], + "idx": 0 + }, + { + "pos": [ + 41, + 10 + ], + "idx": 1 + }, + { + "pos": [ + 42, + 10 + ], + "idx": 2 + }, + { + "pos": [ + 2, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 9 + ], + "idx": 6 + }, + { + "pos": [ + 4, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 19, + 9 + ], + "idx": 46 + }, + { + "pos": [ + 20, + 9 + ], + "idx": 56 + }, + { + "pos": [ + 21, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 22, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 23, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 24, + 9 + ], + "idx": 60 + }, + { + "pos": [ + 25, + 9 + ], + "idx": 48 + }, + { + "pos": [ + 40, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 9 + ], + "idx": 6 + }, + { + "pos": [ + 42, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 8 + ], + "idx": 27 + }, + { + "pos": [ + 4, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 8 + ], + "idx": 27 + }, + { + "pos": [ + 42, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 7 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 7 + ], + "idx": 6 + }, + { + "pos": [ + 4, + 7 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 7 + ], + "idx": 0 + }, + { + "pos": [ + 9, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 7 + ], + "idx": 2 + }, + { + "pos": [ + 34, + 7 + ], + "idx": 0 + }, + { + "pos": [ + 35, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 36, + 7 + ], + "idx": 2 + }, + { + "pos": [ + 40, + 7 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 7 + ], + "idx": 6 + }, + { + "pos": [ + 42, + 7 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 6 + ], + "idx": 27 + }, + { + "pos": [ + 4, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 9, + 6 + ], + "idx": 6 + }, + { + "pos": [ + 10, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 34, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 35, + 6 + ], + "idx": 6 + }, + { + "pos": [ + 36, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 6 + ], + "idx": 27 + }, + { + "pos": [ + 42, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 6 + }, + { + "pos": [ + 4, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 9, + 5 + ], + "idx": 27 + }, + { + "pos": [ + 10, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 34, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 35, + 5 + ], + "idx": 27 + }, + { + "pos": [ + 36, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 5 + ], + "idx": 6 + }, + { + "pos": [ + 42, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 27 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 9, + 4 + ], + "idx": 6 + }, + { + "pos": [ + 10, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 14, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 15, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 20, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 28, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 29, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 30, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 34, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 35, + 4 + ], + "idx": 6 + }, + { + "pos": [ + 36, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 4 + ], + "idx": 27 + }, + { + "pos": [ + 42, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 6 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 9, + 3 + ], + "idx": 27 + }, + { + "pos": [ + 10, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 15, + 3 + ], + "idx": 6 + }, + { + "pos": [ + 16, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 4 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 27 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 5 + }, + { + "pos": [ + 24, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 28, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 29, + 3 + ], + "idx": 6 + }, + { + "pos": [ + 30, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 34, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 35, + 3 + ], + "idx": 27 + }, + { + "pos": [ + 36, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 3 + ], + "idx": 6 + }, + { + "pos": [ + 42, + 3 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 27 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 6 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 27 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 11 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 6 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 12 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 28, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 29, + 2 + ], + "idx": 27 + }, + { + "pos": [ + 30, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 34, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 35, + 2 + ], + "idx": 6 + }, + { + "pos": [ + 36, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 2 + ], + "idx": 27 + }, + { + "pos": [ + 42, + 2 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 6 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 27 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 6 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 28, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 29, + 1 + ], + "idx": 6 + }, + { + "pos": [ + 30, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 34, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 35, + 1 + ], + "idx": 27 + }, + { + "pos": [ + 36, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 1 + ], + "idx": 6 + }, + { + "pos": [ + 42, + 1 + ], + "idx": 10 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 27 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 6 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 27 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 4 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 27 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 5 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 28, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 29, + 0 + ], + "idx": 27 + }, + { + "pos": [ + 30, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 34, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 35, + 0 + ], + "idx": 6 + }, + { + "pos": [ + 36, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 40, + 0 + ], + "idx": 10 + }, + { + "pos": [ + 41, + 0 + ], + "idx": 27 + }, + { + "pos": [ + 42, + 0 + ], + "idx": 10 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 723.2670800000001, + 169.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 664, + 185.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 1357, + 377.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 776.3334, + 345.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 496, + 185.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 1008, + 441.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 104, + 377.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 328, + 441.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 1136.3332, + 281.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 859.96912, + 437.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 952, + 185.5 + ], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [ + 376, + 437.5 + ], + "element": "../elements/item/sniper_rifle/sniper_rifle.element.yaml" + }, + { + "pos": [ + 1104.6666, + 441.5 + ], + "element": "../elements/item/cannon/cannon.element.yaml" + }, + { + "pos": [ + 918.5881400000001, + 427.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 461.2156, + 429.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 1012.6668, + 449.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 740, + 335.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 496, + 203.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 480.72724000000005, + 169.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 686.0571199999999, + 329.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 1123, + 273.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 579.6668, + 433.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 907, + 433.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 288, + 273.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 114.5, + 399 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 1334.3334, + 399 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/lev06.map.json b/assets/map/levels/lev06.map.json new file mode 100644 index 0000000000..5d1439b354 --- /dev/null +++ b/assets/map/levels/lev06.map.json @@ -0,0 +1,1737 @@ +{ + "name": "lev06", + "background_color": "7EA8A6", + "grid_size": [ + 25, + 20 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 1, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 2, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 3, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 4, + 17 + ], + "idx": 34 + }, + { + "pos": [ + 10, + 17 + ], + "idx": 32 + }, + { + "pos": [ + 11, + 17 + ], + "idx": 34 + }, + { + "pos": [ + 12, + 17 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 17 + ], + "idx": 32 + }, + { + "pos": [ + 14, + 17 + ], + "idx": 34 + }, + { + "pos": [ + 20, + 17 + ], + "idx": 32 + }, + { + "pos": [ + 21, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 17 + ], + "idx": 22 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 16 + ], + "idx": 10 + }, + { + "pos": [ + 5, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 7, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 10, + 16 + ], + "idx": 46 + }, + { + "pos": [ + 11, + 16 + ], + "idx": 48 + }, + { + "pos": [ + 12, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 16 + ], + "idx": 46 + }, + { + "pos": [ + 14, + 16 + ], + "idx": 48 + }, + { + "pos": [ + 15, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 16, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 17, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 16 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 15 + ], + "idx": 0 + }, + { + "pos": [ + 2, + 15 + ], + "idx": 2 + }, + { + "pos": [ + 3, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 15 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 15 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 15 + ], + "idx": 0 + }, + { + "pos": [ + 24, + 15 + ], + "idx": 2 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 14 + ], + "idx": 14 + }, + { + "pos": [ + 2, + 14 + ], + "idx": 16 + }, + { + "pos": [ + 3, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 14 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 14 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 14 + ], + "idx": 14 + }, + { + "pos": [ + 24, + 14 + ], + "idx": 16 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 13 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 13 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 13 + ], + "idx": 0 + }, + { + "pos": [ + 22, + 13 + ], + "idx": 2 + }, + { + "pos": [ + 23, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 0 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 2 + }, + { + "pos": [ + 2, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 12 + ], + "idx": 10 + }, + { + "pos": [ + 5, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 7, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 12 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 16, + 12 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 17, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 12 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 12 + ], + "idx": 14 + }, + { + "pos": [ + 22, + 12 + ], + "idx": 16 + }, + { + "pos": [ + 23, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 14 + }, + { + "pos": [ + 1, + 11 + ], + "idx": 16 + }, + { + "pos": [ + 2, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 11 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 11 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 10 + ], + "idx": 0 + }, + { + "pos": [ + 3, + 10 + ], + "idx": 2 + }, + { + "pos": [ + 4, + 10 + ], + "idx": 10 + }, + { + "pos": [ + 11, + 10 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 12, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 13, + 10 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 20, + 10 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 10 + ], + "idx": 0 + }, + { + "pos": [ + 23, + 10 + ], + "idx": 2 + }, + { + "pos": [ + 24, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 9 + ], + "idx": 14 + }, + { + "pos": [ + 3, + 9 + ], + "idx": 16 + }, + { + "pos": [ + 4, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 20, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 21, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 9 + ], + "idx": 14 + }, + { + "pos": [ + 23, + 9 + ], + "idx": 16 + }, + { + "pos": [ + 24, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 1, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 2, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 3, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 4, + 8 + ], + "idx": 48 + }, + { + "pos": [ + 5, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 7, + 8 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 17, + 8 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 18, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 8 + ], + "idx": 46 + }, + { + "pos": [ + 21, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 6 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 10, + 6 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 14, + 6 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 15, + 6 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 1, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 18, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 19, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 18, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 4 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 15 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 5 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 4 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 15 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 5 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 0 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 2 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 9 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 743.6666, + 377.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 585.2456, + 441.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 400, + 377.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 96, + 377.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 396, + 601.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 200, + 569.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 677.3334, + 185.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 97.333328, + 185.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 760, + 585.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [ + 221.48572000000001, + 319.5 + ], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [ + 179.0589, + 425.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 630.4404, + 425.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 599.3334, + 297.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 403, + 395.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 192, + 587.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 664, + 203.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 282.00012000000004, + 559.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 562.7273, + 553.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 251.57886000000002, + 431.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 56, + 593.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 708, + 177.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 152.00006000000002, + 177.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 477.3334, + 585.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 401.64703999999995, + 41.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 161.33333, + 186 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 641.3333, + 184 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 671.6667, + 604.3333333 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 129.33333, + 606 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/lev07.map.json b/assets/map/levels/lev07.map.json new file mode 100644 index 0000000000..2d772d6d69 --- /dev/null +++ b/assets/map/levels/lev07.map.json @@ -0,0 +1,2239 @@ +{ + "name": "lev07", + "background_color": "7EA8A6", + "grid_size": [ + 27, + 22 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 20 + ], + "idx": 4 + }, + { + "pos": [ + 1, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 2, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 3, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 4, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 5, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 6, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 7, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 8, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 9, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 10, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 11, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 12, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 14, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 15, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 16, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 19, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 20, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 21, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 22, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 23, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 24, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 25, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 26, + 20 + ], + "idx": 5 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 2, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 3, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 4, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 5, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 7, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 10, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 11, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 12, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 13, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 14, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 16, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 17, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 21, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 22, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 23, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 24, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 25, + 19 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 2, + 13 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 6, + 13 + ], + "idx": 21 + }, + { + "pos": [ + 7, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 16, + 13 + ], + "idx": 21 + }, + { + "pos": [ + 17, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 24, + 13 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 25, + 13 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 2, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 3, + 10 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 23, + 10 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 24, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 25, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 8 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 7, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 10, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 11, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 12, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 13, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 14, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 16, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 17, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 19, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 8 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 26, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 11 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 2, + 6 + ], + "idx": 2 + }, + { + "pos": [ + 24, + 6 + ], + "idx": 0 + }, + { + "pos": [ + 25, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 26, + 6 + ], + "idx": 12 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 11 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 2 + }, + { + "pos": [ + 23, + 5 + ], + "idx": 0 + }, + { + "pos": [ + 24, + 5 + ], + "idx": 12 + }, + { + "pos": [ + 25, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 11 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 12 + }, + { + "pos": [ + 24, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 48, + 233.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 820, + 233.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 792, + 249.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 48, + 249.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 312, + 153.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 312, + 473.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 248, + 473.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 600, + 473.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 536, + 153.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 65.399994, + 471.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 824, + 469.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 441.41045999999994, + 143.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 310.07714, + 203.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 528, + 203.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 304, + 525.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 592, + 513.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 560, + 299.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 296, + 303.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 568, + 137.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 328.11425999999994, + 145.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 416, + 369.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 568, + 483.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 308, + 479.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 253.37262, + 487.27 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 572.10425, + 478.44417999999996 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 195.5694, + 173.61493000000002 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 628.5847, + 161.02252 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/test_level.map.json b/assets/map/levels/test_level.map.json new file mode 100644 index 0000000000..de3756c350 --- /dev/null +++ b/assets/map/levels/test_level.map.json @@ -0,0 +1,1845 @@ +{ + "name": "test_level", + "background_color": "7EA8A6", + "grid_size": [ + 31, + 23 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 22 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 22 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 21 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 21 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 4, + 20 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 5, + 20 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 11, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 21, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 20 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 20 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 20 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 30, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 4, + 16 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 5, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 11, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 21, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 16 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 16 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 16 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 30, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 4, + 12 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 5, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 11, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 21, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 12 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 12 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 12 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 30, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 30, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 11 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 2 + }, + { + "pos": [ + 29, + 10 + ], + "idx": 0 + }, + { + "pos": [ + 30, + 10 + ], + "idx": 12 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 4, + 8 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 5, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 11, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 21, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 8 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 8 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 29, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 5, + 4 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 7, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 11, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 22, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 26, + 4 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 29, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 29, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 30, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 11 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 27, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 28, + 0 + ], + "idx": 1 + }, + { + "pos": [ + 29, + 0 + ], + "idx": 12 + }, + { + "pos": [ + 30, + 0 + ], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 336, + 441.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 667.6116999999999, + 441.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 813.7638, + 43.5 + ], + "element": "../elements/item/starfish_launcher/starfish_launcher.element.yaml" + }, + { + "pos": [ + 336, + 97.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 488, + 223.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 653.7488000000001, + 465.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 505.7092, + 555.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 661.04712, + 303.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 433.38, + 427.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 624, + 425.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 544, + 49.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 732.7508, + 425.5 + ], + "element": "../elements/item/trident/trident.element.yaml" + }, + { + "pos": [ + 550.0372, + 305.5 + ], + "element": "../elements/item/crown_hat/crown_hat.element.yaml" + }, + { + "pos": [ + 328, + 325.5 + ], + "element": "../elements/item/cowboy_hat/cowboy_hat.element.yaml" + }, + { + "pos": [ + 451, + 345.5 + ], + "element": "../elements/item/chest_hat/chest_hat.element.yaml" + }, + { + "pos": [ + 752, + 153.5 + ], + "element": "../elements/item/chefs_hat/chefs_hat.element.yaml" + }, + { + "pos": [ + 680, + 169.5 + ], + "element": "../elements/item/bucket_hat/bucket_hat.element.yaml" + }, + { + "pos": [ + 361, + 179.5 + ], + "element": "../elements/item/pirate_hat/pirate_hat.element.yaml" + }, + { + "pos": [ + 80, + 41.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 48, + 361.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 913.75, + 41.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 944, + 361.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 200, + 209.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 208, + 585.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 208, + 459.5 + ], + "element": "../elements/item/turtle_shell/turtle_shell.element.yaml" + }, + { + "pos": [ + 208, + 329.5 + ], + "element": "../elements/item/machine_gun/machine_gun.element.yaml" + }, + { + "pos": [ + 793.3334, + 669.5 + ], + "element": "../elements/item/cannon/cannon.element.yaml" + }, + { + "pos": [ + 804, + 315.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 445.77790000000005, + 51.5 + ], + "element": "../elements/item/sniper_rifle/sniper_rifle.element.yaml" + }, + { + "pos": [ + 792, + 161.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 624, + 57.5 + ], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [ + 200, + 57.5 + ], + "element": "../elements/item/blunderbuss/blunderbuss.element.yaml" + }, + { + "pos": [ + 303.9424, + 183.5 + ], + "element": "../elements/item/crate/crate.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 255.66667, + 63 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 715.6667, + 64.33330000000001 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/zyrafa01.map.json b/assets/map/levels/zyrafa01.map.json new file mode 100644 index 0000000000..cbd8ca6b75 --- /dev/null +++ b/assets/map/levels/zyrafa01.map.json @@ -0,0 +1,1213 @@ +{ + "name": "zyrafa01", + "background_color": "7EA8A6", + "grid_size": [ + 27, + 21 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 16 + ], + "idx": 0 + }, + { + "pos": [ + 1, + 16 + ], + "idx": 2 + }, + { + "pos": [ + 25, + 16 + ], + "idx": 0 + }, + { + "pos": [ + 26, + 16 + ], + "idx": 2 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 1, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 1, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 25, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 1, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 7, + 11 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 8, + 11 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 18, + 11 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 19, + 11 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 25, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 10 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 12, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 13, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 14, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 10 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 25, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 14 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 18 + }, + { + "pos": [ + 2, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 3, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 4, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 5, + 9 + ], + "idx": 23 + }, + { + "pos": [ + 21, + 9 + ], + "idx": 21 + }, + { + "pos": [ + 22, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 23, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 24, + 9 + ], + "idx": 22 + }, + { + "pos": [ + 25, + 9 + ], + "idx": 19 + }, + { + "pos": [ + 26, + 9 + ], + "idx": 16 + }, + { + "pos": [ + 9, + 7 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 10, + 7 + ], + "idx": 21 + }, + { + "pos": [ + 11, + 7 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 7 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 7 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 7 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 7 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 7 + ], + "idx": 23 + }, + { + "pos": [ + 17, + 7 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 5, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 6, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 4 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 1 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 5 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 9 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 344, + 185.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 152, + 345.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 760, + 345.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 376, + 281.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 664, + 185.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 728, + 341.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 97, + 345.5 + ], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [ + 448, + 209.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 440, + 365.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 787.846, + 345.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 656, + 209.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 152.92298, + 373.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 704, + 345.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 271.76469999999995, + 393.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 95.42862, + 337.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 432, + 169.5 + ], + "element": "../elements/item/blunderbass/blunderbass.element.yaml" + }, + { + "pos": [ + 616, + 393.5 + ], + "element": "../elements/item/mines/mines.element.yaml" + }, + { + "pos": [ + 439.05884000000003, + 361.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 128, + 352 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 736, + 352 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 256, + 192 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 608, + 192 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/zyrafa02.map.json b/assets/map/levels/zyrafa02.map.json new file mode 100644 index 0000000000..81df1f5b0f --- /dev/null +++ b/assets/map/levels/zyrafa02.map.json @@ -0,0 +1,2766 @@ +{ + "name": "zyrafa02", + "background_color": "7EA8A6", + "grid_size": [ + 23, + 26 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 25 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 24 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 23 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 22 + ], + "idx": 3 + }, + { + "pos": [ + 1, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 22 + ], + "idx": 4 + }, + { + "pos": [ + 4, + 22 + ], + "idx": 4 + }, + { + "pos": [ + 5, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 6, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 7, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 8, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 9, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 10, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 11, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 12, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 14, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 15, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 16, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 22 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 22 + ], + "idx": 5 + }, + { + "pos": [ + 19, + 22 + ], + "idx": 5 + }, + { + "pos": [ + 20, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 22 + ], + "idx": 3 + }, + { + "pos": [ + 0, + 21 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 21 + ], + "idx": 4 + }, + { + "pos": [ + 3, + 21 + ], + "idx": 16 + }, + { + "pos": [ + 4, + 21 + ], + "idx": 9 + }, + { + "pos": [ + 18, + 21 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 21 + ], + "idx": 14 + }, + { + "pos": [ + 20, + 21 + ], + "idx": 5 + }, + { + "pos": [ + 21, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 21 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 20 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 20 + ], + "idx": 4 + }, + { + "pos": [ + 3, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 4, + 20 + ], + "idx": 16 + }, + { + "pos": [ + 18, + 20 + ], + "idx": 14 + }, + { + "pos": [ + 19, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 20, + 20 + ], + "idx": 5 + }, + { + "pos": [ + 21, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 20 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 19 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 18 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 17 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 16 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 7, + 15 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 8, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 10, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 11, + 15 + ], + "idx": 24 + }, + { + "pos": [ + 12, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 13, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 14, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 15 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 20, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 15 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 14 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 3, + 13 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 4, + 13 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 18, + 13 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 19, + 13 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 13 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 12 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 11 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 10 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 7, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 9, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 10, + 10 + ], + "idx": 21 + }, + { + "pos": [ + 11, + 10 + ], + "idx": 22 + }, + { + "pos": [ + 12, + 10 + ], + "idx": 23 + }, + { + "pos": [ + 13, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 14, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 10 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 16, + 10 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 20, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 10 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 10, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 11, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 9 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 10, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 11, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 8 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 3, + 7 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 4, + 7 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 10, + 7 + ], + "idx": 14 + }, + { + "pos": [ + 11, + 7 + ], + "idx": 15 + }, + { + "pos": [ + 12, + 7 + ], + "idx": 16 + }, + { + "pos": [ + 18, + 7 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 19, + 7 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 20, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 7 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 5 + ], + "idx": 2 + }, + { + "pos": [ + 18, + 5 + ], + "idx": 0 + }, + { + "pos": [ + 19, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 21, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 17 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 11 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 4 + ], + "idx": 12 + }, + { + "pos": [ + 21, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 4 + ], + "idx": 17 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 440, + 185.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 216, + 185.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 376, + 377.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 600, + 217.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 120, + 473.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 436.90920000000006, + 363.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 373.33326, + 513.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 381.99987999999996, + 401.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 216.49993999999998, + 209.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 264, + 521.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 455.11120000000005, + 521.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 232.22222, + 367.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 488, + 361.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 352, + 177.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 128, + 480 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 608, + 480 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 128, + 288 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 608, + 288 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/zyrafa03.map.json b/assets/map/levels/zyrafa03.map.json new file mode 100644 index 0000000000..09b50190ca --- /dev/null +++ b/assets/map/levels/zyrafa03.map.json @@ -0,0 +1,2077 @@ +{ + "name": "zyrafa03", + "background_color": "7EA8A6", + "grid_size": [ + 27, + 22 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 20 + ], + "idx": 4 + }, + { + "pos": [ + 1, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 2, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 3, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 4, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 5, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 6, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 7, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 8, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 9, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 10, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 11, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 12, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 13, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 14, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 15, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 16, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 19, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 20, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 21, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 22, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 23, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 24, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 25, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 26, + 20 + ], + "idx": 5 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 2, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 3, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 4, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 5, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 6, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 7, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 8, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 9, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 10, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 11, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 12, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 13, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 14, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 15, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 16, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 17, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 18, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 19, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 20, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 21, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 22, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 23, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 24, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 25, + 19 + ], + "idx": 58 + }, + { + "pos": [ + 26, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 6, + 13 + ], + "idx": 21 + }, + { + "pos": [ + 7, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 8, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 9, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 10, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 16, + 13 + ], + "idx": 21 + }, + { + "pos": [ + 17, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 13 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 26, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 58 + }, + { + "pos": [ + 2, + 10 + ], + "idx": 60 + }, + { + "pos": [ + 12, + 10 + ], + "idx": 56 + }, + { + "pos": [ + 13, + 10 + ], + "idx": 58 + }, + { + "pos": [ + 14, + 10 + ], + "idx": 60 + }, + { + "pos": [ + 24, + 10 + ], + "idx": 56 + }, + { + "pos": [ + 25, + 10 + ], + "idx": 58 + }, + { + "pos": [ + 26, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 7 + ], + "idx": 3 + }, + { + "pos": [ + 26, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 11 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 2, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 3, + 6 + ], + "idx": 2 + }, + { + "pos": [ + 13, + 6 + ], + "idx": 10 + }, + { + "pos": [ + 23, + 6 + ], + "idx": 0 + }, + { + "pos": [ + 24, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 25, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 26, + 6 + ], + "idx": 12 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 11 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 5 + ], + "idx": 10 + }, + { + "pos": [ + 23, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 5 + ], + "idx": 12 + }, + { + "pos": [ + 25, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 10 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 11 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 6 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 3 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 12 + }, + { + "pos": [ + 24, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 2 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 52, + 233.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 792, + 249.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 88, + 249.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 312, + 153.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 312, + 473.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 248, + 473.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 600, + 473.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 536, + 153.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 607.8462, + 481.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 313.81812, + 491.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 528, + 181.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 403.41186000000005, + 137.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 468.28576, + 137.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 822.3335, + 233.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 568, + 137.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 288, + 143.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 416, + 369.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 584.25, + 465.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 308, + 479.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 64, + 384 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 800, + 384 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 192, + 160 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 672, + 160 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/zyrafa04.map.json b/assets/map/levels/zyrafa04.map.json new file mode 100644 index 0000000000..77dd5b02ee --- /dev/null +++ b/assets/map/levels/zyrafa04.map.json @@ -0,0 +1,2980 @@ +{ + "name": "zyrafa04", + "background_color": "7EA8A6", + "grid_size": [ + 34, + 23 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 0, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 22 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 22 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 22 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 22 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 22 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 22 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 22 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 21 + ], + "idx": 11 + }, + { + "pos": [ + 3, + 21 + ], + "idx": 12 + }, + { + "pos": [ + 4, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 21 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 21 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 21 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 21 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 21 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 21 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 21 + ], + "idx": 11 + }, + { + "pos": [ + 31, + 21 + ], + "idx": 12 + }, + { + "pos": [ + 32, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 21 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 20 + ], + "idx": 4 + }, + { + "pos": [ + 16, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 20 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 20 + ], + "idx": 5 + }, + { + "pos": [ + 19, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 20 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 20 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 20 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 19 + ], + "idx": 11 + }, + { + "pos": [ + 4, + 19 + ], + "idx": 12 + }, + { + "pos": [ + 5, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 19 + ], + "idx": 11 + }, + { + "pos": [ + 16, + 19 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 19 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 19 + ], + "idx": 12 + }, + { + "pos": [ + 19, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 19 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 19 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 19 + ], + "idx": 11 + }, + { + "pos": [ + 30, + 19 + ], + "idx": 12 + }, + { + "pos": [ + 31, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 19 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 18 + ], + "idx": 11 + }, + { + "pos": [ + 1, + 18 + ], + "idx": 12 + }, + { + "pos": [ + 2, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 18 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 18 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 18 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 18 + ], + "idx": 11 + }, + { + "pos": [ + 33, + 18 + ], + "idx": 12 + }, + { + "pos": [ + 0, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 17 + ], + "idx": 14 + }, + { + "pos": [ + 14, + 17 + ], + "idx": 15 + }, + { + "pos": [ + 15, + 17 + ], + "idx": 15 + }, + { + "pos": [ + 16, + 17 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 17 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 17 + ], + "idx": 15 + }, + { + "pos": [ + 19, + 17 + ], + "idx": 15 + }, + { + "pos": [ + 20, + 17 + ], + "idx": 16 + }, + { + "pos": [ + 26, + 17 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 17 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 17 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 16 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 16 + ], + "idx": 4 + }, + { + "pos": [ + 3, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 4, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 5, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 6, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 7, + 16 + ], + "idx": 16 + }, + { + "pos": [ + 26, + 16 + ], + "idx": 14 + }, + { + "pos": [ + 27, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 28, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 29, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 30, + 16 + ], + "idx": 15 + }, + { + "pos": [ + 31, + 16 + ], + "idx": 5 + }, + { + "pos": [ + 32, + 16 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 16 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 31, + 15 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 15 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 15 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 31, + 14 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 14 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 14 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 13 + ], + "idx": 21 + }, + { + "pos": [ + 14, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 15, + 13 + ], + "idx": 56 + }, + { + "pos": [ + 16, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 17, + 13 + ], + "idx": 58 + }, + { + "pos": [ + 18, + 13 + ], + "idx": 60 + }, + { + "pos": [ + 19, + 13 + ], + "idx": 21 + }, + { + "pos": [ + 20, + 13 + ], + "idx": 23 + }, + { + "pos": [ + 31, + 13 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 13 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 13 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 31, + 12 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 12 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 12 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 31, + 11 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 11 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 11 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 31, + 10 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 10 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 10 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 3, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 4, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 5, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 6, + 9 + ], + "idx": 60 + }, + { + "pos": [ + 27, + 9 + ], + "idx": 56 + }, + { + "pos": [ + 28, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 29, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 30, + 9 + ], + "idx": 58 + }, + { + "pos": [ + 31, + 9 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 9 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 9 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 31, + 8 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 8 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 8 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 7 + ], + "idx": 0 + }, + { + "pos": [ + 14, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 7 + ], + "idx": 2 + }, + { + "pos": [ + 31, + 7 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 7 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 7 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 31, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 32, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 11 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 5 + ], + "idx": 2 + }, + { + "pos": [ + 13, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 5 + ], + "idx": 4 + }, + { + "pos": [ + 16, + 5 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 5 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 5 + ], + "idx": 5 + }, + { + "pos": [ + 19, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 0 + }, + { + "pos": [ + 27, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 28, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 29, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 30, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 31, + 5 + ], + "idx": 12 + }, + { + "pos": [ + 32, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 33, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 11 + }, + { + "pos": [ + 5, + 4 + ], + "idx": 12 + }, + { + "pos": [ + 6, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 4 + ], + "idx": 11 + }, + { + "pos": [ + 16, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 4 + ], + "idx": 12 + }, + { + "pos": [ + 19, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 4 + ], + "idx": 11 + }, + { + "pos": [ + 29, + 4 + ], + "idx": 12 + }, + { + "pos": [ + 30, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 3 + ], + "idx": 11 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 12 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 3 + ], + "idx": 11 + }, + { + "pos": [ + 32, + 3 + ], + "idx": 12 + }, + { + "pos": [ + 33, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 14 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 15 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 15 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 20, + 2 + ], + "idx": 16 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 11 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 12 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 1 + ], + "idx": 11 + }, + { + "pos": [ + 30, + 1 + ], + "idx": 12 + }, + { + "pos": [ + 31, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 0, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 1, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 27, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 32, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 33, + 0 + ], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 472, + 281.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 168, + 217.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 440, + 473.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 888, + 217.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 952, + 345.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 116.28711000000001, + 201.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 982, + 201.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 608, + 465.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 173.83886, + 233.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 880, + 243.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 432, + 481.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 900.6666, + 329.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 251.00006000000002, + 209.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 155.33334000000002, + 337.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 548.2855999999999, + 265.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 864, + 209.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 616, + 275.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 488, + 279.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 126.57143, + 348.2857 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 959.2857, + 353.28568 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 896, + 224 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 192, + 224 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/zyrafa05.map.json b/assets/map/levels/zyrafa05.map.json new file mode 100644 index 0000000000..49449f3168 --- /dev/null +++ b/assets/map/levels/zyrafa05.map.json @@ -0,0 +1,1102 @@ +{ + "name": "zyrafa05", + "background_color": "7EA8A6", + "grid_size": [ + 32, + 23 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 4, + 15 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 5, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 6, + 15 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 11, + 15 + ], + "idx": 21 + }, + { + "pos": [ + 12, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 13, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 14, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 15, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 16, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 17, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 18, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 19, + 15 + ], + "idx": 22 + }, + { + "pos": [ + 20, + 15 + ], + "idx": 23 + }, + { + "pos": [ + 25, + 15 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 26, + 15 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 27, + 15 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 13, + 9 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 14, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 15, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 16, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 17, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 18, + 9 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 2, + 6 + ], + "idx": 0 + }, + { + "pos": [ + 3, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 6 + ], + "idx": 2 + }, + { + "pos": [ + 23, + 6 + ], + "idx": 0 + }, + { + "pos": [ + 24, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 25, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 26, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 27, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 28, + 6 + ], + "idx": 1 + }, + { + "pos": [ + 29, + 6 + ], + "idx": 2 + }, + { + "pos": [ + 2, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 3, + 5 + ], + "idx": 12 + }, + { + "pos": [ + 4, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 5 + ], + "idx": 11 + }, + { + "pos": [ + 8, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 5 + ], + "idx": 12 + }, + { + "pos": [ + 25, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 5 + ], + "idx": 11 + }, + { + "pos": [ + 29, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 3, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 5, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 7, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 27, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 28, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 3, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 7, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 3, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 7, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 1 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 1 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 0 + ], + "idx": 9 + }, + { + "pos": [ + 28, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 0 + ], + "idx": 9 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 778.3076000000001, + 265.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 440, + 345.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 107.14286000000001, + 249.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 472, + 537.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 786.5715399999999, + 249.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 568, + 537.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 96, + 281.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 512, + 331.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 464, + 557.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 181.53846, + 233.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 848.9231, + 233.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 536, + 329.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 384.00005999999996, + 535.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 608, + 535.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 216, + 533.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + }, + { + "pos": [ + 888, + 535.5 + ], + "element": "../elements/item/grenades/grenades.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 172.61539, + 533.69228 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 224, + 256 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 800, + 256 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 842.1539, + 531.38458 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/map/levels/zyrafa06.map.json b/assets/map/levels/zyrafa06.map.json new file mode 100644 index 0000000000..bd981f429c --- /dev/null +++ b/assets/map/levels/zyrafa06.map.json @@ -0,0 +1,1271 @@ +{ + "name": "zyrafa06", + "background_color": "7EA8A6", + "grid_size": [ + 34, + 14 + ], + "tile_size": [ + 32, + 32 + ], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [ + 21, + 9 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 22, + 9 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 23, + 9 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 6, + 8 + ], + "idx": 56, + "jump_through": true + }, + { + "pos": [ + 7, + 8 + ], + "idx": 58, + "jump_through": true + }, + { + "pos": [ + 8, + 8 + ], + "idx": 60, + "jump_through": true + }, + { + "pos": [ + 11, + 7 + ], + "idx": 0 + }, + { + "pos": [ + 12, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 7 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 7 + ], + "idx": 2 + }, + { + "pos": [ + 11, + 6 + ], + "idx": 7 + }, + { + "pos": [ + 12, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 6 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 6 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 5 + ], + "idx": 7 + }, + { + "pos": [ + 12, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 5 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 5 + ], + "idx": 9 + }, + { + "pos": [ + 24, + 5 + ], + "idx": 0 + }, + { + "pos": [ + 25, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 26, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 27, + 5 + ], + "idx": 1 + }, + { + "pos": [ + 28, + 5 + ], + "idx": 2 + }, + { + "pos": [ + 4, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 5, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 11, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 12, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 4 + ], + "idx": 0 + }, + { + "pos": [ + 16, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 4 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 4 + ], + "idx": 2 + }, + { + "pos": [ + 24, + 4 + ], + "idx": 7 + }, + { + "pos": [ + 25, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 4 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 4 + ], + "idx": 9 + }, + { + "pos": [ + 4, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 5, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 12, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 16, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 24, + 3 + ], + "idx": 7 + }, + { + "pos": [ + 25, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 3 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 3 + ], + "idx": 9 + }, + { + "pos": [ + 4, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 5, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 11, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 12, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 16, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 24, + 2 + ], + "idx": 7 + }, + { + "pos": [ + 25, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 2 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 2 + ], + "idx": 9 + }, + { + "pos": [ + 2, + 1 + ], + "idx": 0 + }, + { + "pos": [ + 3, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 4, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 5, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 6, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 7, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 8, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 9, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 10, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 11, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 12, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 13, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 14, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 15, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 16, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 17, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 18, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 19, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 20, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 21, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 22, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 23, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 24, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 25, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 26, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 27, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 28, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 29, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 30, + 1 + ], + "idx": 1 + }, + { + "pos": [ + 31, + 1 + ], + "idx": 2 + }, + { + "pos": [ + 2, + 0 + ], + "idx": 7 + }, + { + "pos": [ + 3, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 4, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 5, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 6, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 7, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 8, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 9, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 10, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 11, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 12, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 13, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 14, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 15, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 16, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 17, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 18, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 19, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 20, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 21, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 22, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 23, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 24, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 25, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 26, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 27, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 28, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 29, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 30, + 0 + ], + "idx": 8 + }, + { + "pos": [ + 31, + 0 + ], + "idx": 9 + } + ], + "tilemap": "../resources/default_tileset.png" + } + } + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 536, + 185.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 216, + 89.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 440, + 89.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 888, + 217.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 760, + 89.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 408, + 281.5 + ], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [ + 920, + 89.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [ + 120, + 89.5 + ], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } + } + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 222.66680000000002, + 127.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 446, + 185.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 712.0001199999999, + 73.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 891.3332, + 241.5 + ], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [ + 478.66668000000004, + 265.5 + ], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [ + 256, + 73.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 652.5714, + 73.5 + ], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [ + 456, + 285.5 + ], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [ + 1015.1428000000001, + 95.5 + ], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [ + 343.11120000000005, + 73.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 758.1110799999999, + 73.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 949.4359199999999, + 73.5 + ], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [ + 706.8571999999999, + 337.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [ + 224, + 311.5 + ], + "element": "../elements/item/sword/sword.element.yaml" + } + ] + } + } + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [ + 160, + 192 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 320, + 96 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 576, + 192 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 704, + 96 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 800, + 224 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [ + 960, + 96 + ], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } + } + } + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [ + 896, + 480 + ], + "z": -110, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [ + 896, + 480 + ], + "z": -109, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [ + 896, + 480 + ], + "z": -108, + "position": [ + 0, + 360 + ], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [ + 896, + 480 + ], + "z": -107, + "position": [ + 0, + 360 + ], + "scale": 2 + } + ] +} \ No newline at end of file diff --git a/assets/textures/map/background_01.png b/assets/map/resources/background_01.png similarity index 100% rename from assets/textures/map/background_01.png rename to assets/map/resources/background_01.png diff --git a/assets/textures/map/background_02.png b/assets/map/resources/background_02.png similarity index 100% rename from assets/textures/map/background_02.png rename to assets/map/resources/background_02.png diff --git a/assets/textures/map/background_03.png b/assets/map/resources/background_03.png similarity index 100% rename from assets/textures/map/background_03.png rename to assets/map/resources/background_03.png diff --git a/assets/textures/map/background_04.png b/assets/map/resources/background_04.png similarity index 100% rename from assets/textures/map/background_04.png rename to assets/map/resources/background_04.png diff --git a/assets/textures/map/default_tileset.png b/assets/map/resources/default_tileset.png similarity index 100% rename from assets/textures/map/default_tileset.png rename to assets/map/resources/default_tileset.png diff --git a/assets/map/scripts/kill_out_of_bounds.ts b/assets/map/scripts/kill_out_of_bounds.ts new file mode 100644 index 0000000000..d8c8750c01 --- /dev/null +++ b/assets/map/scripts/kill_out_of_bounds.ts @@ -0,0 +1,33 @@ +const killZoneBorder = 500; + +export default { + updateInGame() { + let netInfo = NetInfo.get(); + let map = world.query(MapMeta).map((x) => x.components[0])[0]; + if (!map) return; + + let mapWidth = map.grid_size.x * map.tile_size.x; + let leftKillZone = -killZoneBorder; + let rightKillZone = killZoneBorder + mapWidth; + let bottomKillZone = -killZoneBorder; + + for (const { entity, components } of world.query(PlayerIdx, Transform)) { + let [player_idx, transform] = components; + + if ( + (netInfo.is_client && player_idx[0] == netInfo.player_idx) || + !netInfo.is_client + ) { + let pos = transform.translation; + + if ( + pos.x < leftKillZone || + pos.x > rightKillZone || + pos.y < bottomKillZone + ) { + Player.kill(entity); + } + } + } + }, +}; diff --git a/assets/player/skins/catty/catty.player.yaml b/assets/player/skins/catty/catty.player.yaml new file mode 100644 index 0000000000..a438acd14a --- /dev/null +++ b/assets/player/skins/catty/catty.player.yaml @@ -0,0 +1,28 @@ +name: Catty + +spritesheet: + image: catty.png + tile_size: [96, 80] + columns: 14 + rows: 7 + + animation_fps: 9 + animations: + idle: + frames: [0, 13] + repeat: true + fall: + frames: [42, 42] + repeat: false + rise: + frames: [28, 28] + repeat: false + walk: + frames: [14, 19] + repeat: true + crouch: + frames: [56, 56] + repeat: false + death_1: + frames: [70, 76] + repeat: false diff --git a/assets/textures/player/PlayerCatty(96x80).png b/assets/player/skins/catty/catty.png similarity index 100% rename from assets/textures/player/PlayerCatty(96x80).png rename to assets/player/skins/catty/catty.png diff --git a/assets/player/skins/fishy/fishy.player.yaml b/assets/player/skins/fishy/fishy.player.yaml new file mode 100644 index 0000000000..a0096e679c --- /dev/null +++ b/assets/player/skins/fishy/fishy.player.yaml @@ -0,0 +1,28 @@ +name: Fishy + +spritesheet: + image: fishy.png + tile_size: [96, 80] + columns: 14 + rows: 7 + + animation_fps: 9 + animations: + idle: + frames: [0, 13] + repeat: true + fall: + frames: [42, 42] + repeat: false + rise: + frames: [28, 28] + repeat: false + walk: + frames: [14, 19] + repeat: true + crouch: + frames: [56, 56] + repeat: false + death_1: + frames: [70, 76] + repeat: false diff --git a/assets/textures/player/PlayerFishy(96x80).png b/assets/player/skins/fishy/fishy.png similarity index 100% rename from assets/textures/player/PlayerFishy(96x80).png rename to assets/player/skins/fishy/fishy.png diff --git a/assets/player/skins/lionfishy/lionfishy.player.yaml b/assets/player/skins/lionfishy/lionfishy.player.yaml new file mode 100644 index 0000000000..b2ca4919fd --- /dev/null +++ b/assets/player/skins/lionfishy/lionfishy.player.yaml @@ -0,0 +1,28 @@ +name: Lionfishy + +spritesheet: + image: lionfishy.png + tile_size: [96, 80] + columns: 14 + rows: 7 + + animation_fps: 9 + animations: + idle: + frames: [0, 13] + repeat: true + fall: + frames: [42, 42] + repeat: false + rise: + frames: [28, 28] + repeat: false + walk: + frames: [14, 19] + repeat: true + crouch: + frames: [56, 56] + repeat: false + death_1: + frames: [70, 76] + repeat: false diff --git a/assets/textures/player/PlayerLionfishy(96x80).png b/assets/player/skins/lionfishy/lionfishy.png similarity index 100% rename from assets/textures/player/PlayerLionfishy(96x80).png rename to assets/player/skins/lionfishy/lionfishy.png diff --git a/assets/player/skins/orcy/orcy.player.yaml b/assets/player/skins/orcy/orcy.player.yaml new file mode 100644 index 0000000000..bed21c9112 --- /dev/null +++ b/assets/player/skins/orcy/orcy.player.yaml @@ -0,0 +1,28 @@ +name: Orcy + +spritesheet: + image: orcy.png + tile_size: [96, 80] + columns: 14 + rows: 7 + + animation_fps: 9 + animations: + idle: + frames: [0, 13] + repeat: true + fall: + frames: [42, 42] + repeat: false + rise: + frames: [28, 28] + repeat: false + walk: + frames: [14, 19] + repeat: true + crouch: + frames: [56, 56] + repeat: false + death_1: + frames: [70, 76] + repeat: false diff --git a/assets/textures/player/PlayerOrcy(96x80).png b/assets/player/skins/orcy/orcy.png similarity index 100% rename from assets/textures/player/PlayerOrcy(96x80).png rename to assets/player/skins/orcy/orcy.png diff --git a/assets/player/skins/pescy/pescy.player.yaml b/assets/player/skins/pescy/pescy.player.yaml new file mode 100644 index 0000000000..12ec12d6cf --- /dev/null +++ b/assets/player/skins/pescy/pescy.player.yaml @@ -0,0 +1,28 @@ +name: Pescy + +spritesheet: + image: pescy.png + tile_size: [96, 80] + columns: 14 + rows: 7 + + animation_fps: 9 + animations: + idle: + frames: [0, 13] + repeat: true + fall: + frames: [42, 42] + repeat: false + rise: + frames: [28, 28] + repeat: false + walk: + frames: [14, 19] + repeat: true + crouch: + frames: [56, 56] + repeat: false + death_1: + frames: [70, 76] + repeat: false diff --git a/assets/textures/player/PlayerPescy(96x80).png b/assets/player/skins/pescy/pescy.png similarity index 100% rename from assets/textures/player/PlayerPescy(96x80).png rename to assets/player/skins/pescy/pescy.png diff --git a/assets/player/skins/sharky/sharky.player.yaml b/assets/player/skins/sharky/sharky.player.yaml new file mode 100644 index 0000000000..c1b8ebedae --- /dev/null +++ b/assets/player/skins/sharky/sharky.player.yaml @@ -0,0 +1,29 @@ +name: Sharky + +spritesheet: + image: sharky.png + tile_size: [96, 80] + columns: 14 + rows: 7 + + animation_fps: 9 + animations: + idle: + frames: [0, 13] + repeat: true + fall: + frames: [42, 42] + repeat: false + rise: + frames: [28, 28] + repeat: false + walk: + frames: [14, 19] + repeat: true + crouch: + frames: [56, 56] + repeat: false + death_1: + frames: [70, 76] + repeat: false + diff --git a/assets/textures/player/PlayerSharky(96x80).png b/assets/player/skins/sharky/sharky.png similarity index 100% rename from assets/textures/player/PlayerSharky(96x80).png rename to assets/player/skins/sharky/sharky.png diff --git a/assets/player/states/crouch.ts b/assets/player/states/crouch.ts new file mode 100644 index 0000000000..3c5b27ab9d --- /dev/null +++ b/assets/player/states/crouch.ts @@ -0,0 +1,49 @@ +const scriptId = Script.getInfo().path; + +export default { + playerStateTransition() { + const player_inputs = world.resource(PlayerInputs); + const playerComponents = world + .query(PlayerState, PlayerIdx, KinematicBody) + .map((x) => x.components); + + for (const [playerState, playerIdx, body] of playerComponents) { + if (playerState.id != scriptId) continue; + + const control = player_inputs.players[playerIdx[0]].control; + + if (!body.is_on_ground || !(control.move_direction.y < -0.5)) { + playerState.id = Assets.getAbsolutePath("./idle.ts"); + } + } + }, + handlePlayerState() { + const player_inputs = world.resource(PlayerInputs); + + // For every player + const playerComponents = world + .query(PlayerState, PlayerIdx, AnimationBankSprite, KinematicBody) + .map((x) => x.components); + for (const [ + playerState, + playerIdx, + animationBankSprite, + body, + ] of playerComponents) { + // In this state + if (playerState.id != scriptId) continue; + + // Set the current animation + if (playerState.age == 0) { + animationBankSprite.current_animation = "crouch"; + } + + // Add basic physics controls + const control = player_inputs.players[playerIdx[0]].control; + + if (control.jump_just_pressed) { + body.fall_through = true; + } + } + }, +}; diff --git a/assets/player/states/dead.ts b/assets/player/states/dead.ts new file mode 100644 index 0000000000..aa8e4258bb --- /dev/null +++ b/assets/player/states/dead.ts @@ -0,0 +1,36 @@ +const scriptId = Script.getInfo().path; + +/** Responsible for transitioning players to the dead state whenever they are killed */ +export default { + playerStateTransition() { + const players = world.query(PlayerState); + + // Transition all players tht have been killed to this state + for (const event of Player.killEvents()) { + const [playerState] = players.get(event.player); + playerState.id = Assets.getAbsolutePath("./dead.ts"); + } + }, + handlePlayerState() { + const players = world.query(PlayerState, AnimationBankSprite); + + for (const { + entity, + components: [playerState, animationBankSprite], + } of players) { + // In this state + if (playerState.id != scriptId) continue; + + // Set animation when we enter the state + if (playerState.age == 0) { + animationBankSprite.current_animation = "death_1"; + } + + // Despawn player after 1.5 seconds ( 90 frames ) + if (playerState.age >= 90) { + Player.despawn(entity); + Script.setEntityState(entity, undefined); + } + } + }, +}; diff --git a/assets/player/states/default.ts b/assets/player/states/default.ts new file mode 100644 index 0000000000..694c80ca86 --- /dev/null +++ b/assets/player/states/default.ts @@ -0,0 +1,14 @@ +/** Responsible for transitioning players in the default, meaningless state to "idle" */ +export default { + playerStateTransition() { + for (const [playerState] of world + .query(PlayerState) + .map((x) => x.components)) { + // Loop over players in the default state + if (playerState.id !== "") continue; + + // Transition to the idle state + playerState.id = Assets.getAbsolutePath("./idle.ts"); + } + }, +}; diff --git a/assets/player/states/idle.ts b/assets/player/states/idle.ts new file mode 100644 index 0000000000..2c8d77b31a --- /dev/null +++ b/assets/player/states/idle.ts @@ -0,0 +1,79 @@ +const scriptId = Script.getInfo().path; + +export default { + playerStateTransition() { + const player_inputs = world.resource(PlayerInputs); + const playerComponents = world + .query(PlayerState, PlayerIdx, KinematicBody) + .map((x) => x.components); + + for (const [playerState, playerIdx, body] of playerComponents) { + if (playerState.id != scriptId) continue; + + const control = player_inputs.players[playerIdx[0]].control; + + if (!body.is_on_ground) { + playerState.id = Assets.getAbsolutePath("./midair.ts"); + } else if (control.move_direction.y < -0.5) { + playerState.id = Assets.getAbsolutePath("./crouch.ts"); + } else if (control.move_direction.x != 0) { + playerState.id = Assets.getAbsolutePath("./walk.ts"); + } + } + }, + handlePlayerState() { + const player_inputs = world.resource(PlayerInputs); + + let items = world.query(Item); + + // For every player + for (const { entity: playerEnt, components } of world.query( + PlayerState, + PlayerIdx, + AnimationBankSprite, + KinematicBody + )) { + const [playerState, playerIdx, animationBankSprite, body] = components; + + // In this state + if (playerState.id != scriptId) continue; + + // Set the current animation + if (playerState.age == 0) { + animationBankSprite.current_animation = "idle"; + } + + // Add basic physics controls + const control = player_inputs.players[playerIdx[0]].control; + + // If we are grabbing + if (control.grab_just_pressed) { + // Get inventory + const currentInventory = Player.getInventory(playerEnt); + + if (!currentInventory) { + // For each actor colliding with the player + for (const collider of CollisionWorld.actorCollisions(playerEnt)) { + const item = items.get(collider); + if (!!item) { + Player.setInventory(playerEnt, collider); + break; + } + } + } else { + Player.setInventory(playerEnt, null); + } + } + + // Use item if we have one + if (control.shoot_just_pressed && Player.getInventory(playerEnt)) { + Player.useItem(playerEnt); + } + + if (control.jump_just_pressed) { + body.velocity.y = 15; + } + body.velocity.x = 0; + } + }, +}; diff --git a/assets/player/states/midair.ts b/assets/player/states/midair.ts new file mode 100644 index 0000000000..94a670dd2f --- /dev/null +++ b/assets/player/states/midair.ts @@ -0,0 +1,80 @@ +const scriptId = Script.getInfo().path; + +export default { + playerStateTransition() { + const playerComponents = world + .query(PlayerState, KinematicBody) + .map((x) => x.components); + + for (const [playerState, body] of playerComponents) { + if (playerState.id != scriptId) continue; + + if (body.is_on_ground) { + playerState.id = Assets.getAbsolutePath("./idle.ts"); + } + } + }, + handlePlayerState() { + const player_inputs = world.resource(PlayerInputs); + const items = world.query(Item); + + // For every player + for (const { entity: playerEnt, components } of world.query( + PlayerState, + PlayerIdx, + AnimationBankSprite, + KinematicBody + )) { + const [playerState, playerIdx, animationBankSprite, body] = components; + if (playerState.id != scriptId) continue; + + // Set the current animation + if (body.velocity.y > 0) { + animationBankSprite.current_animation = "rise"; + } else { + animationBankSprite.current_animation = "fall"; + } + + const control = player_inputs.players[playerIdx[0]].control; + + // If we are grabbing + if (control.grab_just_pressed) { + const current_inventory = Player.getInventory(playerEnt); + if (!current_inventory) { + // For each actor colliding with the player + for (const collider of CollisionWorld.actorCollisions(playerEnt)) { + const item = items.get(collider); + if (!!item) { + const [_item] = item; + Player.setInventory(playerEnt, collider); + break; + } + } + } else { + Player.setInventory(playerEnt, null); + } + } + + // Use item if we have one + if (control.shoot_just_pressed && Player.getInventory(playerEnt)) { + Player.useItem(playerEnt); + } + + // Add controls + body.velocity.x = control.move_direction.x * 5; + + // Fall through platforms when pressing down + if (control.move_direction.y < -0.5 && control.jump_pressed) { + body.fall_through = true; + } else { + body.fall_through = false; + } + + if (body.velocity.x > 0) { + animationBankSprite.flip_x = false; + } else if (body.velocity.x < 0) { + animationBankSprite.flip_x = true; + } + } + }, +}; diff --git a/assets/player/states/walk.ts b/assets/player/states/walk.ts new file mode 100644 index 0000000000..e17cb76752 --- /dev/null +++ b/assets/player/states/walk.ts @@ -0,0 +1,83 @@ +const scriptId = Script.getInfo().path; + +export default { + playerStateTransition() { + const player_inputs = world.resource(PlayerInputs); + const playerComponents = world + .query(PlayerState, PlayerIdx, KinematicBody) + .map((x) => x.components); + + for (const [playerState, playerIdx, body] of playerComponents) { + if (playerState.id != scriptId) continue; + + const control = player_inputs.players[playerIdx[0]].control; + + if (!body.is_on_ground) { + playerState.id = Assets.getAbsolutePath("./midair.ts"); + } else if (body.is_on_ground && control.move_direction.y < -0.5) { + playerState.id = Assets.getAbsolutePath("./crouch.ts"); + } else if (control.move_direction.x == 0) { + playerState.id = Assets.getAbsolutePath("./idle.ts"); + } + } + }, + handlePlayerState() { + const player_inputs = world.resource(PlayerInputs); + + const items = world.query(Item); + + // For every player + for (const { entity: playerEnt, components } of world.query( + PlayerState, + PlayerIdx, + AnimationBankSprite, + KinematicBody + )) { + const [playerState, playerIdx, animationBankSprite, body] = components; + + // Add basic physics controls + const control = player_inputs.players[playerIdx[0]].control; + + // In this state + if (playerState.id != scriptId) continue; + + // Set the current animation + if (playerState.age == 0) { + animationBankSprite.current_animation = "walk"; + } + + // If we are grabbing + if (control.grab_just_pressed) { + const current_inventory = Player.getInventory(playerEnt); + if (!current_inventory) { + // For each actor colliding with the player + for (const collider of CollisionWorld.actorCollisions(playerEnt)) { + const item = items.get(collider); + if (!!item) { + Player.setInventory(playerEnt, collider); + break; + } + } + } else { + Player.setInventory(playerEnt, null); + } + } + + // Use item if we have one + if (control.shoot_just_pressed && Player.getInventory(playerEnt)) { + Player.useItem(playerEnt); + } + + // Add jump + if (control.jump_just_pressed) { + body.velocity.y = 15; + } + body.velocity.x = control.move_direction.x * 5; + if (control.move_direction.x > 0) { + animationBankSprite.flip_x = false; + } else if (control.move_direction.x < 0) { + animationBankSprite.flip_x = true; + } + } + }, +}; diff --git a/assets/sounds/.DS_Store b/assets/sounds/.DS_Store deleted file mode 100644 index b309d5b7d1..0000000000 Binary files a/assets/sounds/.DS_Store and /dev/null differ diff --git a/assets/textures/map/default_decoration.png b/assets/textures/map/default_decoration.png deleted file mode 100644 index d39320dac6..0000000000 Binary files a/assets/textures/map/default_decoration.png and /dev/null differ diff --git a/assets/ui/FairfaxSM.ttf b/assets/ui/FairfaxSM.ttf new file mode 100644 index 0000000000..049920e016 Binary files /dev/null and b/assets/ui/FairfaxSM.ttf differ diff --git a/assets/ui/FairfaxSM.ttf.license.txt b/assets/ui/FairfaxSM.ttf.license.txt new file mode 100644 index 0000000000..d3484cad44 --- /dev/null +++ b/assets/ui/FairfaxSM.ttf.license.txt @@ -0,0 +1,93 @@ +Copyright (c) 2008-2020 Kreative Software. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/assets/ui/ark-pixel-16-px-latin-LICENSE.txt b/assets/ui/ark-pixel-16-px-latin-LICENSE.txt new file mode 100644 index 0000000000..f8ab107639 --- /dev/null +++ b/assets/ui/ark-pixel-16-px-latin-LICENSE.txt @@ -0,0 +1,94 @@ +Copyright (c) 2021, TakWolf (https://ark-pixel-font.takwolf.com), +with Reserved Font Name 'Ark Pixel'. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/ui/ark-pixel-16px-latin.ttf b/assets/ui/ark-pixel-16px-latin.ttf new file mode 100644 index 0000000000..430e856220 Binary files /dev/null and b/assets/ui/ark-pixel-16px-latin.ttf differ diff --git a/assets/ui/button_background_clicked.png b/assets/ui/button-down.png similarity index 100% rename from assets/ui/button_background_clicked.png rename to assets/ui/button-down.png diff --git a/assets/ui/button-focused.png b/assets/ui/button-focused.png new file mode 100644 index 0000000000..9d186d1185 Binary files /dev/null and b/assets/ui/button-focused.png differ diff --git a/assets/ui/button_background.png b/assets/ui/button.png similarity index 100% rename from assets/ui/button_background.png rename to assets/ui/button.png diff --git a/assets/textures/ui/editor_icons/Cursor.png b/assets/ui/editor/Cursor.png similarity index 100% rename from assets/textures/ui/editor_icons/Cursor.png rename to assets/ui/editor/Cursor.png diff --git a/assets/textures/ui/editor_icons/Eraser.png b/assets/ui/editor/Eraser.png similarity index 100% rename from assets/textures/ui/editor_icons/Eraser.png rename to assets/ui/editor/Eraser.png diff --git a/assets/textures/ui/editor_icons/Object.png b/assets/ui/editor/Object.png similarity index 100% rename from assets/textures/ui/editor_icons/Object.png rename to assets/ui/editor/Object.png diff --git a/assets/textures/ui/editor_icons/Pointer and Map.png b/assets/ui/editor/Pointer and Map.png similarity index 100% rename from assets/textures/ui/editor_icons/Pointer and Map.png rename to assets/ui/editor/Pointer and Map.png diff --git a/assets/textures/ui/editor_icons/Pointer.png b/assets/ui/editor/Pointer.png similarity index 100% rename from assets/textures/ui/editor_icons/Pointer.png rename to assets/ui/editor/Pointer.png diff --git a/assets/textures/ui/editor_icons/Tile.png b/assets/ui/editor/Tile.png similarity index 100% rename from assets/textures/ui/editor_icons/Tile.png rename to assets/ui/editor/Tile.png diff --git a/assets/ui/lifebar-progress.png b/assets/ui/lifebar-progress.png new file mode 100755 index 0000000000..1d37d035e6 Binary files /dev/null and b/assets/ui/lifebar-progress.png differ diff --git a/assets/ui/lifebar.png b/assets/ui/lifebar.png new file mode 100644 index 0000000000..50a8029d24 Binary files /dev/null and b/assets/ui/lifebar.png differ diff --git a/assets/ui/menu-background-zoom.ts b/assets/ui/menu-background-zoom.ts new file mode 100644 index 0000000000..8ca513067a --- /dev/null +++ b/assets/ui/menu-background-zoom.ts @@ -0,0 +1,22 @@ +type MenuBackground = unknown; +const MenuBackground: BevyType = { + typeName: "jumpy::ui::main_menu::MainMenuBackground", +}; + +export default { + update() { + const time = world.resource(Time); + const query = world.query(MenuBackground, Transform); + for (const item of query) { + const [_, transform] = item.components; + + let scale = 1.5 + Math.sin(time.seconds_since_startup * 0.8) * 0.2; + transform.scale.x = scale; + transform.scale.y = scale; + + let offset = Math.sin(time.seconds_since_startup * 0.4) * 50; + transform.translation.x = offset + 60; + transform.translation.y = offset * 0.2 - 20; + } + }, +}; diff --git a/assets/ui/menu-background.png b/assets/ui/menu-background.png new file mode 100644 index 0000000000..d3da3cb0be Binary files /dev/null and b/assets/ui/menu-background.png differ diff --git a/assets/ui/panel.png b/assets/ui/panel.png new file mode 100644 index 0000000000..322d04b3c7 Binary files /dev/null and b/assets/ui/panel.png differ diff --git a/book/src/introduction.md b/book/src/introduction.md index 66a26a21b2..8748ed947e 100644 --- a/book/src/introduction.md +++ b/book/src/introduction.md @@ -1,2 +1,7 @@ + +> **⚠️ Warning:** The information in this book is largely out of date with the work-in-progress Bevy +> rewrite that was recently merged. Once the rewrite stabilizes a little bit we will begin updating +> the documentation to match. + {{#include ../../README.md}} diff --git a/book/src/multiplayer.md b/book/src/multiplayer.md index 78b11afe53..4af30b3c1a 100644 --- a/book/src/multiplayer.md +++ b/book/src/multiplayer.md @@ -1,39 +1,3 @@ # Multiplayer -Connection process in the FishFight is extremely low-level right now. -We do not have a matchmaking server and we want to collect data and network setups and possible problems before doing the process fully automatic. - -![image](https://user-images.githubusercontent.com/910977/133952684-19e7f10a-ed80-49e6-8a31-205f28a78c39.png) - -The only supported game mode right now: 1v1. - -## Connection Types - -### LAN - -When both computers are connected to the same router: are on the same wifi, home network etc. - -Send your local IP from "Self addr" field to your opponent, click "Probe connection" and if connection can be established - click "Connect". - -### STUN - -When each player is under a NAT. Usually when its two players over internet with different network providers. -This option may work, but may not, it depends on the type of nat, router configs etc. - -Idea is exactly the same as with LAN: copy-paste your own "Self addr" over discord, probe connection, if it works - click "Connect" - -### Relay - -When both players are on remote computers over internet, but STUN connection did not work and router reconfiguration is not an option - there is a relay server available. - -Relay server will introduce additional LAG - each packet will be forwarded through a server. - -Connection idea is still the same, but instead of IP "Self addr" will be an ID on the relay server. Copy-paste it over internet, set "Opponent addr", push "Connect" - -## Router Configuration - -When STUN server failed, but Relay is too slow - there is a way to improve gameplay experience. Go to router settings and forward ports 3400, 3401, 3402, 3403 to computer with the FishFight. - -It still may depend on the internet provider, maybe the router itself is behind some global provider NAT or something. - -TODO: Make a better "Router configuration" section here. +TODO: Update for Bevy Rewrite diff --git a/config.toml b/config.toml deleted file mode 100644 index 2a075c3131..0000000000 --- a/config.toml +++ /dev/null @@ -1,30 +0,0 @@ -[window] -width = 955 -height = 600 -fullscreen = false -high-dpi = false - -[input.keyboard-primary] -left = 'Left' -right = 'Right' -fire = 'L' -jump = 'Up' -pickup = 'K' -crouch = 'Down' -slide = 'RightControl' - -[input.keyboard-secondary] -left = 'A' -right = 'D' -fire = 'V' -jump = 'W' -pickup = 'C' -crouch = 'S' -slide = 'F' - -[[input.gamepads]] -id = 0 -fire = 'X' -jump = 'A' -pickup = 'B' -slide = 'Y' diff --git a/core/Cargo.toml b/core/Cargo.toml deleted file mode 100644 index 786dc56647..0000000000 --- a/core/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "jumpy-core" -version = "0.4.3" -authors = ["The Fish Fight Game & Spicy Lobster Developers"] -license = "MIT OR Apache-2.0" -edition = "2021" - -[dependencies] -fishsticks = { version = "0.2.1", git = "https://github.com/fishfolks/fishsticks", default-features = false, features = ["gilrs"] } -macroquad = { version = "=0.3.16" } # Newer versions break is_key_pressed detection -hecs = "0.7.1" -serde = { version = "1.0", package = "serde", features = ["derive"] } -serde_json = { version = "1.0" } -toml = "0.5" -async-trait = "0.1.52" - -[target.'cfg(target_arch = "wasm32")'.dependencies] -getrandom = { version = "0.2", features = ["js"] } -wasm-bindgen = "0.2.74" \ No newline at end of file diff --git a/core/src/channel.rs b/core/src/channel.rs deleted file mode 100644 index ad484d6e96..0000000000 --- a/core/src/channel.rs +++ /dev/null @@ -1,15 +0,0 @@ -//! This is just a wrapper for `std::sync::mpsc::channel` that is a bit tidier than the tuple -//! provided by the std - -use std::sync::mpsc::{Receiver, Sender}; - -pub struct Channel { - pub tx: Sender, - pub rx: Receiver, -} - -impl Channel { - pub fn new(tx: Sender, rx: Receiver) -> Self { - Channel { tx, rx } - } -} diff --git a/core/src/config.rs b/core/src/config.rs deleted file mode 100644 index f1105a1aaa..0000000000 --- a/core/src/config.rs +++ /dev/null @@ -1,55 +0,0 @@ -use std::fs; -use std::path::Path; - -use serde::{Deserialize, Serialize}; - -use crate::input::mapping::InputMapping; -use crate::Result; - -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -pub struct Config { - #[serde(default)] - pub window: WindowConfig, - #[serde(default)] - pub input: InputMapping, -} - -impl Config { - pub fn load>(path: P) -> Result { - let path = path.as_ref(); - - let mut res = if path.exists() { - let bytes = fs::read(path)?; - toml::from_slice(&bytes)? - } else { - Config::default() - }; - - res.input.verify()?; - - Ok(res) - } -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -pub struct WindowConfig { - pub width: u32, - pub height: u32, - #[serde(default, rename = "fullscreen")] - pub is_fullscreen: bool, - #[serde(default, rename = "high-dpi")] - pub is_high_dpi: bool, -} - -impl Default for WindowConfig { - fn default() -> Self { - WindowConfig { - width: 955, - height: 600, - is_fullscreen: false, - is_high_dpi: false, - } - } -} diff --git a/core/src/data.rs b/core/src/data.rs deleted file mode 100644 index f71a84110d..0000000000 --- a/core/src/data.rs +++ /dev/null @@ -1,149 +0,0 @@ -use std::fmt::{self, Debug, Formatter}; -use std::path::Path; - -use macroquad::prelude::*; - -use serde::de::DeserializeOwned; -use serde::{Deserialize, Serialize}; - -use crate::text::ToStringHelper; -use crate::Result; - -pub struct Error { - pub path: String, - pub err: Box, -} - -impl Error { - pub fn new(path: &str, err: E) -> Self - where - E: Into>, - { - Error { - path: path.to_string(), - err: err.into(), - } - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "File error: {}: {}", &self.path, &self.err) - } -} - -impl Debug for Error { - fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - write!(f, "File error: {}: {}", &self.path, &self.err) - } -} - -impl std::error::Error for Error {} - -/// Serialize a value into a string of JSON. -/// Will return a `serde_json::Error` if a parsing error is encountered. -pub fn serialize_json_string(value: &T) -> std::result::Result -where - T: Serialize, -{ - let res = serde_json::to_string_pretty(value)?; - Ok(res) -} - -/// Serialize a value into a slice of JSON. -/// Will return a `serde_json::Error` if a parsing error is encountered. -pub fn serialize_json_bytes(value: &T) -> std::result::Result, serde_json::Error> -where - T: Serialize, -{ - let res = serde_json::to_string_pretty(value)?; - Ok(res.into_bytes()) -} - -/// Deserialize a slice of JSON into a value. -/// Will return a `serde_json::Error` if a parsing error is encountered. -pub fn deserialize_json_bytes<'a, T>(value: &'a [u8]) -> std::result::Result -where - T: Deserialize<'a>, -{ - let res = serde_json::from_slice(value)?; - Ok(res) -} - -/// Deserialize a string of JSON into a value. -/// Will return a `serde_json::Error` if a parsing error is encountered. -pub fn deserialize_json_string<'a, T>(value: &'a str) -> std::result::Result -where - T: Deserialize<'a>, -{ - let res = serde_json::from_str(value)?; - Ok(res) -} - -/// Deserialize a JSON file into a value -pub async fn deserialize_json_file>(path: P) -> Result -where - T: DeserializeOwned, -{ - let path_str = path.as_ref().to_string_helper(); - - let bytes = load_file(&path_str).await?; - match serde_json::from_slice(&bytes) { - Err(err) => Err(Error::new(path_str.as_str(), err).into()), - Ok(res) => Ok(res), - } -} - -/// Serialize a value into a string of TOML. -/// Will return a `toml::ser::Error` if a parsing error is encountered. -pub fn serialize_toml_string(value: &T) -> std::result::Result -where - T: Serialize, -{ - let res = toml::to_string_pretty(value)?; - Ok(res) -} - -/// Serialize a value into a slice of TOML. -/// Will return a `toml::ser::Error` if a parsing error is encountered. -pub fn serialize_toml_bytes(value: &T) -> std::result::Result, toml::ser::Error> -where - T: Serialize, -{ - let res = toml::to_string_pretty(value)?; - Ok(res.into_bytes()) -} - -/// Deserialize a slice of TOML into a value. -/// Will return a `toml::de::Error` if a parsing error is encountered. -pub fn deserialize_toml_bytes<'a, T>(value: &'a [u8]) -> std::result::Result -where - T: Deserialize<'a>, -{ - let res = toml::from_slice(value)?; - Ok(res) -} - -/// Deserialize a string of TOML into a value. -/// Will return a `toml::de::Error` if a parsing error is encountered. -pub fn deserialize_toml_string<'a, T>(value: &'a str) -> std::result::Result -where - T: Deserialize<'a>, -{ - let res = toml::from_str(value)?; - Ok(res) -} - -/// Deserialize a TOML file into a value -pub async fn deserialize_toml_file>(path: P) -> Result -where - T: DeserializeOwned, -{ - let path_str = path.as_ref().to_string_helper(); - - let bytes = load_file(&path_str).await?; - match toml::from_slice(&bytes) { - Err(err) => Err(Error::new(path_str.as_str(), err).into()), - Ok(res) => Ok(res), - } -} diff --git a/core/src/error.rs b/core/src/error.rs deleted file mode 100644 index df75d28a5e..0000000000 --- a/core/src/error.rs +++ /dev/null @@ -1,254 +0,0 @@ -//! This implements a simple Error and Result type, inspired by `io::Error` and `io::Result`, that -//! enables us to work seamlessly with all the different `Error` implementations from our dependencies. -//! -//! Just implement `From` for `Error`, for any remote implementations of `Error` you encounter, and -//! use the `Result` type alias, from this module, as return type when it is required. - -use std::sync::mpsc::SendError; -use std::{error, fmt, io, result, string::FromUtf8Error}; - -use macroquad::file::FileError; -use macroquad::text::FontError; - -use crate::network::{NetworkMessage, RequestStatus}; - -pub type Result = result::Result; - -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub enum ErrorKind { - General, - Config, - Ecs, - File, - Parsing, - Input, - Api, - Network, - EditorAction, -} - -impl ErrorKind { - pub fn as_str(&self) -> &'static str { - match *self { - ErrorKind::General => "General error", - ErrorKind::Config => "Config error", - ErrorKind::Ecs => "ECS error", - ErrorKind::File => "File error", - ErrorKind::Parsing => "Parsing error", - ErrorKind::Input => "Input error", - ErrorKind::Api => "Api error", - ErrorKind::Network => "Network error", - ErrorKind::EditorAction => "Editor action error", - } - } -} - -impl From for Error { - fn from(status: RequestStatus) -> Self { - Error::new_message( - ErrorKind::Api, - &format!("[{}]: {}", status.as_code(), status.as_str()), - ) - } -} - -enum Repr { - Simple(ErrorKind), - Message(ErrorKind, String), - SimpleMessage(ErrorKind, &'static &'static str), - Custom(Box), -} - -#[derive(Debug)] -struct Custom { - kind: ErrorKind, - error: Box, -} - -pub struct Error { - repr: Repr, -} - -impl fmt::Debug for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Debug::fmt(&self.repr, f) - } -} - -impl Error { - pub fn new(kind: ErrorKind, error: E) -> Error - where - E: Into>, - { - Error { - repr: Repr::Custom(Box::new(Custom { - kind, - error: error.into(), - })), - } - } - - pub fn new_message(kind: ErrorKind, msg: &str) -> Self { - Error { - repr: Repr::Message(kind, msg.to_string()), - } - } - - pub const fn new_const(kind: ErrorKind, msg: &'static &'static str) -> Self { - Error { - repr: Repr::SimpleMessage(kind, msg), - } - } - - pub fn kind(&self) -> ErrorKind { - match self.repr { - Repr::Custom(ref c) => c.kind, - Repr::Simple(kind) => kind, - Repr::SimpleMessage(kind, _) => kind, - Repr::Message(kind, _) => kind, - } - } -} - -impl From for Error { - fn from(kind: ErrorKind) -> Self { - Error { - repr: Repr::Simple(kind), - } - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match &self.repr { - Repr::Custom(ref c) => c.error.fmt(f), - Repr::Simple(kind) => write!(f, "{}", kind.as_str()), - Repr::SimpleMessage(_, &msg) => msg.fmt(f), - Repr::Message(_, msg) => msg.fmt(f), - } - } -} - -impl fmt::Debug for Repr { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - Repr::Simple(kind) => f.debug_tuple("Kind").field(kind).finish(), - Repr::SimpleMessage(kind, &message) => f - .debug_struct("Error") - .field("kind", kind) - .field("message", &message) - .finish(), - Repr::Message(kind, message) => f - .debug_struct("Error") - .field("kind", kind) - .field("message", &message) - .finish(), - Repr::Custom(ref c) => c.error.fmt(f), - } - } -} - -impl error::Error for Error { - fn source(&self) -> Option<&(dyn error::Error + 'static)> { - match self.repr { - Repr::Simple(..) => None, - Repr::Message(..) => None, - Repr::SimpleMessage(..) => None, - Repr::Custom(ref c) => c.error.source(), - } - } -} - -impl From for Error { - fn from(err: crate::data::Error) -> Self { - Error::new(ErrorKind::Parsing, err) - } -} - -impl From for Error { - fn from(err: fishsticks::error::Error) -> Error { - Error::new_message(ErrorKind::Input, &err) - } -} - -impl From for Error { - fn from(err: io::Error) -> Error { - Error::new(ErrorKind::File, err) - } -} - -impl From> for Error { - fn from(err: SendError) -> Self { - Error::new(ErrorKind::Network, err) - } -} - -impl From for Error { - fn from(err: FromUtf8Error) -> Self { - Error::new(ErrorKind::Parsing, err) - } -} - -impl From for Error { - fn from(err: FileError) -> Self { - Error::new(ErrorKind::File, err) - } -} - -impl From for Error { - fn from(err: FontError) -> Self { - Error::new(ErrorKind::Parsing, err) - } -} - -impl From for Error { - fn from(err: hecs::ComponentError) -> Self { - Error::new(ErrorKind::Ecs, err) - } -} - -impl From for Error { - fn from(err: hecs::NoSuchEntity) -> Self { - Error::new(ErrorKind::Ecs, err) - } -} - -impl From for Error { - fn from(err: hecs::QueryOneError) -> Self { - Error::new(ErrorKind::Ecs, err) - } -} - -impl From for Error { - fn from(err: serde_json::Error) -> Self { - Error::new(ErrorKind::Parsing, err) - } -} - -impl From for Error { - fn from(err: toml::ser::Error) -> Self { - Error::new(ErrorKind::Parsing, err) - } -} - -impl From for Error { - fn from(err: toml::de::Error) -> Self { - Error::new(ErrorKind::Parsing, err) - } -} - -/// This will create an error based on the parameters you provide. -/// It follows the same rules as `format!`, only this takes an optional `ErrorKind`, as its -/// first argument (before the format string), which will be the kind of `Error` returned. -/// If no `ErrorKind` is specified, the default variant `ErrorKind::General` will be used. -#[macro_export] -macro_rules! formaterr { - ($kind:path, $($arg:tt)*) => ({ - let res = format!($($arg)*); - $crate::error::Error::new_message($kind, &res) - }); - ($($arg:tt)*) => ({ - let res = format!($($arg)*); - $crate::error::Error::new_const($crate::error::ErrorKind::General, &res) - }); -} diff --git a/core/src/input/mapping.rs b/core/src/input/mapping.rs deleted file mode 100644 index 8064d5ba45..0000000000 --- a/core/src/input/mapping.rs +++ /dev/null @@ -1,631 +0,0 @@ -use fishsticks::GamepadId; - -use serde::{Deserialize, Serialize}; - -use crate::error::ErrorKind; -use crate::Result; - -#[derive(Debug, Copy, Clone, PartialEq, Hash, Eq, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -pub enum KeyCode { - Space, - Apostrophe, - Comma, - Minus, - Period, - Slash, - Key0, - Key1, - Key2, - Key3, - Key4, - Key5, - Key6, - Key7, - Key8, - Key9, - Semicolon, - Equal, - A, - B, - C, - D, - E, - F, - G, - H, - I, - J, - K, - L, - M, - N, - O, - P, - Q, - R, - S, - T, - U, - V, - W, - X, - Y, - Z, - LeftBracket, - Backslash, - RightBracket, - GraveAccent, - World1, - World2, - Escape, - Enter, - Tab, - Backspace, - Insert, - Delete, - Right, - Left, - Down, - Up, - PageUp, - PageDown, - Home, - End, - CapsLock, - ScrollLock, - NumLock, - PrintScreen, - Pause, - F1, - F2, - F3, - F4, - F5, - F6, - F7, - F8, - F9, - F10, - F11, - F12, - F13, - F14, - F15, - F16, - F17, - F18, - F19, - F20, - F21, - F22, - F23, - F24, - F25, - Kp0, - Kp1, - Kp2, - Kp3, - Kp4, - Kp5, - Kp6, - Kp7, - Kp8, - Kp9, - KpDecimal, - KpDivide, - KpMultiply, - KpSubtract, - KpAdd, - KpEnter, - KpEqual, - LeftShift, - LeftControl, - LeftAlt, - LeftSuper, - RightShift, - RightControl, - RightAlt, - RightSuper, - Menu, - Unknown, -} - -impl From for KeyCode { - fn from(keycode: macroquad::input::KeyCode) -> Self { - match keycode { - macroquad::input::KeyCode::Space => Self::Space, - macroquad::input::KeyCode::Apostrophe => Self::Apostrophe, - macroquad::input::KeyCode::Comma => Self::Comma, - macroquad::input::KeyCode::Minus => Self::Minus, - macroquad::input::KeyCode::Period => Self::Period, - macroquad::input::KeyCode::Slash => Self::Slash, - macroquad::input::KeyCode::Key0 => Self::Key0, - macroquad::input::KeyCode::Key1 => Self::Key1, - macroquad::input::KeyCode::Key2 => Self::Key2, - macroquad::input::KeyCode::Key3 => Self::Key3, - macroquad::input::KeyCode::Key4 => Self::Key4, - macroquad::input::KeyCode::Key5 => Self::Key5, - macroquad::input::KeyCode::Key6 => Self::Key6, - macroquad::input::KeyCode::Key7 => Self::Key7, - macroquad::input::KeyCode::Key8 => Self::Key8, - macroquad::input::KeyCode::Key9 => Self::Key9, - macroquad::input::KeyCode::Semicolon => Self::Semicolon, - macroquad::input::KeyCode::Equal => Self::Equal, - macroquad::input::KeyCode::A => Self::A, - macroquad::input::KeyCode::B => Self::B, - macroquad::input::KeyCode::C => Self::C, - macroquad::input::KeyCode::D => Self::D, - macroquad::input::KeyCode::E => Self::E, - macroquad::input::KeyCode::F => Self::F, - macroquad::input::KeyCode::G => Self::G, - macroquad::input::KeyCode::H => Self::H, - macroquad::input::KeyCode::I => Self::I, - macroquad::input::KeyCode::J => Self::J, - macroquad::input::KeyCode::K => Self::K, - macroquad::input::KeyCode::L => Self::L, - macroquad::input::KeyCode::M => Self::M, - macroquad::input::KeyCode::N => Self::N, - macroquad::input::KeyCode::O => Self::O, - macroquad::input::KeyCode::P => Self::P, - macroquad::input::KeyCode::Q => Self::Q, - macroquad::input::KeyCode::R => Self::R, - macroquad::input::KeyCode::S => Self::S, - macroquad::input::KeyCode::T => Self::T, - macroquad::input::KeyCode::U => Self::U, - macroquad::input::KeyCode::V => Self::V, - macroquad::input::KeyCode::W => Self::W, - macroquad::input::KeyCode::X => Self::X, - macroquad::input::KeyCode::Y => Self::Y, - macroquad::input::KeyCode::Z => Self::Z, - macroquad::input::KeyCode::LeftBracket => Self::LeftBracket, - macroquad::input::KeyCode::Backslash => Self::Backslash, - macroquad::input::KeyCode::RightBracket => Self::RightBracket, - macroquad::input::KeyCode::GraveAccent => Self::GraveAccent, - macroquad::input::KeyCode::World1 => Self::World1, - macroquad::input::KeyCode::World2 => Self::World2, - macroquad::input::KeyCode::Escape => Self::Escape, - macroquad::input::KeyCode::Enter => Self::Enter, - macroquad::input::KeyCode::Tab => Self::Tab, - macroquad::input::KeyCode::Backspace => Self::Backspace, - macroquad::input::KeyCode::Insert => Self::Insert, - macroquad::input::KeyCode::Delete => Self::Delete, - macroquad::input::KeyCode::Right => Self::Right, - macroquad::input::KeyCode::Left => Self::Left, - macroquad::input::KeyCode::Down => Self::Down, - macroquad::input::KeyCode::Up => Self::Up, - macroquad::input::KeyCode::PageUp => Self::PageUp, - macroquad::input::KeyCode::PageDown => Self::PageDown, - macroquad::input::KeyCode::Home => Self::Home, - macroquad::input::KeyCode::End => Self::End, - macroquad::input::KeyCode::CapsLock => Self::CapsLock, - macroquad::input::KeyCode::ScrollLock => Self::ScrollLock, - macroquad::input::KeyCode::NumLock => Self::NumLock, - macroquad::input::KeyCode::PrintScreen => Self::PrintScreen, - macroquad::input::KeyCode::Pause => Self::Pause, - macroquad::input::KeyCode::F1 => Self::F1, - macroquad::input::KeyCode::F2 => Self::F2, - macroquad::input::KeyCode::F3 => Self::F3, - macroquad::input::KeyCode::F4 => Self::F4, - macroquad::input::KeyCode::F5 => Self::F5, - macroquad::input::KeyCode::F6 => Self::F6, - macroquad::input::KeyCode::F7 => Self::F7, - macroquad::input::KeyCode::F8 => Self::F8, - macroquad::input::KeyCode::F9 => Self::F9, - macroquad::input::KeyCode::F10 => Self::F10, - macroquad::input::KeyCode::F11 => Self::F11, - macroquad::input::KeyCode::F12 => Self::F12, - macroquad::input::KeyCode::F13 => Self::F13, - macroquad::input::KeyCode::F14 => Self::F14, - macroquad::input::KeyCode::F15 => Self::F15, - macroquad::input::KeyCode::F16 => Self::F16, - macroquad::input::KeyCode::F17 => Self::F17, - macroquad::input::KeyCode::F18 => Self::F18, - macroquad::input::KeyCode::F19 => Self::F19, - macroquad::input::KeyCode::F20 => Self::F20, - macroquad::input::KeyCode::F21 => Self::F21, - macroquad::input::KeyCode::F22 => Self::F22, - macroquad::input::KeyCode::F23 => Self::F23, - macroquad::input::KeyCode::F24 => Self::F24, - macroquad::input::KeyCode::F25 => Self::F25, - macroquad::input::KeyCode::Kp0 => Self::Kp0, - macroquad::input::KeyCode::Kp1 => Self::Kp1, - macroquad::input::KeyCode::Kp2 => Self::Kp2, - macroquad::input::KeyCode::Kp3 => Self::Kp3, - macroquad::input::KeyCode::Kp4 => Self::Kp4, - macroquad::input::KeyCode::Kp5 => Self::Kp5, - macroquad::input::KeyCode::Kp6 => Self::Kp6, - macroquad::input::KeyCode::Kp7 => Self::Kp7, - macroquad::input::KeyCode::Kp8 => Self::Kp8, - macroquad::input::KeyCode::Kp9 => Self::Kp9, - macroquad::input::KeyCode::KpDecimal => Self::KpDecimal, - macroquad::input::KeyCode::KpDivide => Self::KpDivide, - macroquad::input::KeyCode::KpMultiply => Self::KpMultiply, - macroquad::input::KeyCode::KpSubtract => Self::KpSubtract, - macroquad::input::KeyCode::KpAdd => Self::KpAdd, - macroquad::input::KeyCode::KpEnter => Self::KpEnter, - macroquad::input::KeyCode::KpEqual => Self::KpEqual, - macroquad::input::KeyCode::LeftShift => Self::LeftShift, - macroquad::input::KeyCode::LeftControl => Self::LeftControl, - macroquad::input::KeyCode::LeftAlt => Self::LeftAlt, - macroquad::input::KeyCode::LeftSuper => Self::LeftSuper, - macroquad::input::KeyCode::RightShift => Self::RightShift, - macroquad::input::KeyCode::RightControl => Self::RightControl, - macroquad::input::KeyCode::RightAlt => Self::RightAlt, - macroquad::input::KeyCode::RightSuper => Self::RightSuper, - macroquad::input::KeyCode::Menu => Self::Menu, - macroquad::input::KeyCode::Unknown => Self::Unknown, - } - } -} - -impl From for macroquad::input::KeyCode { - fn from(keycode: KeyCode) -> Self { - match keycode { - KeyCode::Space => Self::Space, - KeyCode::Apostrophe => Self::Apostrophe, - KeyCode::Comma => Self::Comma, - KeyCode::Minus => Self::Minus, - KeyCode::Period => Self::Period, - KeyCode::Slash => Self::Slash, - KeyCode::Key0 => Self::Key0, - KeyCode::Key1 => Self::Key1, - KeyCode::Key2 => Self::Key2, - KeyCode::Key3 => Self::Key3, - KeyCode::Key4 => Self::Key4, - KeyCode::Key5 => Self::Key5, - KeyCode::Key6 => Self::Key6, - KeyCode::Key7 => Self::Key7, - KeyCode::Key8 => Self::Key8, - KeyCode::Key9 => Self::Key9, - KeyCode::Semicolon => Self::Semicolon, - KeyCode::Equal => Self::Equal, - KeyCode::A => Self::A, - KeyCode::B => Self::B, - KeyCode::C => Self::C, - KeyCode::D => Self::D, - KeyCode::E => Self::E, - KeyCode::F => Self::F, - KeyCode::G => Self::G, - KeyCode::H => Self::H, - KeyCode::I => Self::I, - KeyCode::J => Self::J, - KeyCode::K => Self::K, - KeyCode::L => Self::L, - KeyCode::M => Self::M, - KeyCode::N => Self::N, - KeyCode::O => Self::O, - KeyCode::P => Self::P, - KeyCode::Q => Self::Q, - KeyCode::R => Self::R, - KeyCode::S => Self::S, - KeyCode::T => Self::T, - KeyCode::U => Self::U, - KeyCode::V => Self::V, - KeyCode::W => Self::W, - KeyCode::X => Self::X, - KeyCode::Y => Self::Y, - KeyCode::Z => Self::Z, - KeyCode::LeftBracket => Self::LeftBracket, - KeyCode::Backslash => Self::Backslash, - KeyCode::RightBracket => Self::RightBracket, - KeyCode::GraveAccent => Self::GraveAccent, - KeyCode::World1 => Self::World1, - KeyCode::World2 => Self::World2, - KeyCode::Escape => Self::Escape, - KeyCode::Enter => Self::Enter, - KeyCode::Tab => Self::Tab, - KeyCode::Backspace => Self::Backspace, - KeyCode::Insert => Self::Insert, - KeyCode::Delete => Self::Delete, - KeyCode::Right => Self::Right, - KeyCode::Left => Self::Left, - KeyCode::Down => Self::Down, - KeyCode::Up => Self::Up, - KeyCode::PageUp => Self::PageUp, - KeyCode::PageDown => Self::PageDown, - KeyCode::Home => Self::Home, - KeyCode::End => Self::End, - KeyCode::CapsLock => Self::CapsLock, - KeyCode::ScrollLock => Self::ScrollLock, - KeyCode::NumLock => Self::NumLock, - KeyCode::PrintScreen => Self::PrintScreen, - KeyCode::Pause => Self::Pause, - KeyCode::F1 => Self::F1, - KeyCode::F2 => Self::F2, - KeyCode::F3 => Self::F3, - KeyCode::F4 => Self::F4, - KeyCode::F5 => Self::F5, - KeyCode::F6 => Self::F6, - KeyCode::F7 => Self::F7, - KeyCode::F8 => Self::F8, - KeyCode::F9 => Self::F9, - KeyCode::F10 => Self::F10, - KeyCode::F11 => Self::F11, - KeyCode::F12 => Self::F12, - KeyCode::F13 => Self::F13, - KeyCode::F14 => Self::F14, - KeyCode::F15 => Self::F15, - KeyCode::F16 => Self::F16, - KeyCode::F17 => Self::F17, - KeyCode::F18 => Self::F18, - KeyCode::F19 => Self::F19, - KeyCode::F20 => Self::F20, - KeyCode::F21 => Self::F21, - KeyCode::F22 => Self::F22, - KeyCode::F23 => Self::F23, - KeyCode::F24 => Self::F24, - KeyCode::F25 => Self::F25, - KeyCode::Kp0 => Self::Kp0, - KeyCode::Kp1 => Self::Kp1, - KeyCode::Kp2 => Self::Kp2, - KeyCode::Kp3 => Self::Kp3, - KeyCode::Kp4 => Self::Kp4, - KeyCode::Kp5 => Self::Kp5, - KeyCode::Kp6 => Self::Kp6, - KeyCode::Kp7 => Self::Kp7, - KeyCode::Kp8 => Self::Kp8, - KeyCode::Kp9 => Self::Kp9, - KeyCode::KpDecimal => Self::KpDecimal, - KeyCode::KpDivide => Self::KpDivide, - KeyCode::KpMultiply => Self::KpMultiply, - KeyCode::KpSubtract => Self::KpSubtract, - KeyCode::KpAdd => Self::KpAdd, - KeyCode::KpEnter => Self::KpEnter, - KeyCode::KpEqual => Self::KpEqual, - KeyCode::LeftShift => Self::LeftShift, - KeyCode::LeftControl => Self::LeftControl, - KeyCode::LeftAlt => Self::LeftAlt, - KeyCode::LeftSuper => Self::LeftSuper, - KeyCode::RightShift => Self::RightShift, - KeyCode::RightControl => Self::RightControl, - KeyCode::RightAlt => Self::RightAlt, - KeyCode::RightSuper => Self::RightSuper, - KeyCode::Menu => Self::Menu, - KeyCode::Unknown => Self::Unknown, - } - } -} - -#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -pub enum Button { - A, - B, - X, - Y, - Back, - Guide, - Start, - LeftStick, - RightStick, - LeftShoulder, - RightShoulder, - LeftTrigger, - RightTrigger, - DPadUp, - DPadDown, - DPadLeft, - DPadRight, - #[serde(skip)] - Unknown, -} - -impl From for Button { - fn from(button: fishsticks::Button) -> Self { - match button { - fishsticks::Button::South => Self::A, - fishsticks::Button::East => Self::B, - fishsticks::Button::West => Self::X, - fishsticks::Button::North => Self::Y, - fishsticks::Button::Select => Self::Back, - fishsticks::Button::Mode => Self::Guide, - fishsticks::Button::Start => Self::Start, - fishsticks::Button::LeftThumb => Self::LeftStick, - fishsticks::Button::RightThumb => Self::RightStick, - fishsticks::Button::LeftTrigger => Self::LeftTrigger, - fishsticks::Button::RightTrigger => Self::RightTrigger, - fishsticks::Button::LeftTrigger2 => Self::LeftShoulder, - fishsticks::Button::RightTrigger2 => Self::RightShoulder, - fishsticks::Button::DPadUp => Self::DPadUp, - fishsticks::Button::DPadDown => Self::DPadDown, - fishsticks::Button::DPadLeft => Self::DPadLeft, - fishsticks::Button::DPadRight => Self::DPadRight, - _ => Self::Unknown, - } - } -} - -impl From