From f3b795f9c6b77afe726b215e4f19863016fc8219 Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Fri, 27 Dec 2024 23:16:11 -0800 Subject: [PATCH] Combine deck into one sprite sheet, add aseprite to toolchain --- assets/.gitattributes | 37 +------------- assets/cards.png | 3 ++ assets/filled_circle_green.png | 3 -- assets/filled_circle_purple.png | 3 -- assets/filled_circle_red.png | 3 -- assets/filled_circle_white.png | 3 -- assets/filled_diamond_green.png | 3 -- assets/filled_diamond_purple.png | 3 -- assets/filled_diamond_red.png | 3 -- assets/filled_diamond_white.png | 3 -- assets/filled_squiggle_green.png | 3 -- assets/filled_squiggle_purple.png | 3 -- assets/filled_squiggle_red.png | 3 -- assets/filled_squiggle_white.png | 3 -- assets/its-the-balatro-music.mp3 | 3 -- assets/its-the-balatro-music.ogg | 4 +- assets/open_circle_green.png | 3 -- assets/open_circle_purple.png | 3 -- assets/open_circle_red.png | 3 -- assets/open_circle_white.png | 3 -- assets/open_diamond_green.png | 3 -- assets/open_diamond_purple.png | 3 -- assets/open_diamond_red.png | 3 -- assets/open_diamond_white.png | 3 -- assets/open_squiggle_green.png | 3 -- assets/open_squiggle_purple.png | 3 -- assets/open_squiggle_red.png | 3 -- assets/open_squiggle_white.png | 3 -- assets/shaded_circle_green.png | 3 -- assets/shaded_circle_purple.png | 3 -- assets/shaded_circle_red.png | 3 -- assets/shaded_circle_white.png | 3 -- assets/shaded_diamond_green.png | 3 -- assets/shaded_diamond_purple.png | 3 -- assets/shaded_diamond_red.png | 3 -- assets/shaded_diamond_white.png | 3 -- assets/shaded_squiggle_green.png | 3 -- assets/shaded_squiggle_purple.png | 3 -- assets/shaded_squiggle_red.png | 3 -- assets/shaded_squiggle_white.png | 3 -- flake.nix | 2 + src/debug.rs | 84 +------------------------------ src/deck.rs | 82 ++++++++++++++++++++---------- src/main.rs | 2 +- src/menu.rs | 6 +-- src/play.rs | 17 ++++--- src/setup.rs | 18 +++++++ 47 files changed, 96 insertions(+), 270 deletions(-) create mode 100644 assets/cards.png delete mode 100644 assets/filled_circle_green.png delete mode 100644 assets/filled_circle_purple.png delete mode 100644 assets/filled_circle_red.png delete mode 100644 assets/filled_circle_white.png delete mode 100644 assets/filled_diamond_green.png delete mode 100644 assets/filled_diamond_purple.png delete mode 100644 assets/filled_diamond_red.png delete mode 100644 assets/filled_diamond_white.png delete mode 100644 assets/filled_squiggle_green.png delete mode 100644 assets/filled_squiggle_purple.png delete mode 100644 assets/filled_squiggle_red.png delete mode 100644 assets/filled_squiggle_white.png delete mode 100644 assets/its-the-balatro-music.mp3 delete mode 100644 assets/open_circle_green.png delete mode 100644 assets/open_circle_purple.png delete mode 100644 assets/open_circle_red.png delete mode 100644 assets/open_circle_white.png delete mode 100644 assets/open_diamond_green.png delete mode 100644 assets/open_diamond_purple.png delete mode 100644 assets/open_diamond_red.png delete mode 100644 assets/open_diamond_white.png delete mode 100644 assets/open_squiggle_green.png delete mode 100644 assets/open_squiggle_purple.png delete mode 100644 assets/open_squiggle_red.png delete mode 100644 assets/open_squiggle_white.png delete mode 100644 assets/shaded_circle_green.png delete mode 100644 assets/shaded_circle_purple.png delete mode 100644 assets/shaded_circle_red.png delete mode 100644 assets/shaded_circle_white.png delete mode 100644 assets/shaded_diamond_green.png delete mode 100644 assets/shaded_diamond_purple.png delete mode 100644 assets/shaded_diamond_red.png delete mode 100644 assets/shaded_diamond_white.png delete mode 100644 assets/shaded_squiggle_green.png delete mode 100644 assets/shaded_squiggle_purple.png delete mode 100644 assets/shaded_squiggle_red.png delete mode 100644 assets/shaded_squiggle_white.png diff --git a/assets/.gitattributes b/assets/.gitattributes index 2063859..24a8e87 100644 --- a/assets/.gitattributes +++ b/assets/.gitattributes @@ -1,36 +1 @@ -open_circle_white.png filter=lfs diff=lfs merge=lfs -text -shaded_circle_green.png filter=lfs diff=lfs merge=lfs -text -shaded_circle_purple.png filter=lfs diff=lfs merge=lfs -text -filled_circle_white.png filter=lfs diff=lfs merge=lfs -text -open_circle_green.png filter=lfs diff=lfs merge=lfs -text -shaded_squiggle_white.png filter=lfs diff=lfs merge=lfs -text -filled_diamond_green.png filter=lfs diff=lfs merge=lfs -text -open_squiggle_purple.png filter=lfs diff=lfs merge=lfs -text -filled_squiggle_red.png filter=lfs diff=lfs merge=lfs -text -open_circle_red.png filter=lfs diff=lfs merge=lfs -text -open_circle_purple.png filter=lfs diff=lfs merge=lfs -text -open_squiggle_white.png filter=lfs diff=lfs merge=lfs -text -shaded_squiggle_red.png filter=lfs diff=lfs merge=lfs -text -filled_circle_green.png filter=lfs diff=lfs merge=lfs -text -filled_squiggle_green.png filter=lfs diff=lfs merge=lfs -text -shaded_diamond_purple.png filter=lfs diff=lfs merge=lfs -text -shaded_diamond_white.png filter=lfs diff=lfs merge=lfs -text -shaded_squiggle_purple.png filter=lfs diff=lfs merge=lfs -text -filled_diamond_purple.png filter=lfs diff=lfs merge=lfs -text -shaded_circle_red.png filter=lfs diff=lfs merge=lfs -text -filled_circle_purple.png filter=lfs diff=lfs merge=lfs -text -shaded_squiggle_green.png filter=lfs diff=lfs merge=lfs -text -open_diamond_purple.png filter=lfs diff=lfs merge=lfs -text -open_diamond_white.png filter=lfs diff=lfs merge=lfs -text -open_squiggle_red.png filter=lfs diff=lfs merge=lfs -text -shaded_circle_white.png filter=lfs diff=lfs merge=lfs -text -shaded_diamond_green.png filter=lfs diff=lfs merge=lfs -text -filled_squiggle_purple.png filter=lfs diff=lfs merge=lfs -text -open_diamond_green.png filter=lfs diff=lfs merge=lfs -text -filled_diamond_white.png filter=lfs diff=lfs merge=lfs -text -filled_squiggle_white.png filter=lfs diff=lfs merge=lfs -text -open_diamond_red.png filter=lfs diff=lfs merge=lfs -text -open_squiggle_green.png filter=lfs diff=lfs merge=lfs -text -shaded_diamond_red.png filter=lfs diff=lfs merge=lfs -text -filled_circle_red.png filter=lfs diff=lfs merge=lfs -text -filled_diamond_red.png filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/assets/cards.png b/assets/cards.png new file mode 100644 index 0000000..3982741 --- /dev/null +++ b/assets/cards.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4b521a0d27da3e0ae57706b270c4d39489888229436333f9268c7788b685453 +size 7265 diff --git a/assets/filled_circle_green.png b/assets/filled_circle_green.png deleted file mode 100644 index b3ae7ee..0000000 --- a/assets/filled_circle_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37c51276968aac520b5b2fd02512dbc224e657d18b4c53569d4dd243406b12c6 -size 380 diff --git a/assets/filled_circle_purple.png b/assets/filled_circle_purple.png deleted file mode 100644 index e92bada..0000000 --- a/assets/filled_circle_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a57e585af1f78b2b8becec7eb5ca1e1d5e6b2e7f884504fe581da8d5c384749f -size 379 diff --git a/assets/filled_circle_red.png b/assets/filled_circle_red.png deleted file mode 100644 index c892453..0000000 --- a/assets/filled_circle_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0bd243986816550b660f898084adf0b65cd1e0d8dbcf9d76aacf7df81ef2c495 -size 379 diff --git a/assets/filled_circle_white.png b/assets/filled_circle_white.png deleted file mode 100644 index 9fa8f31..0000000 --- a/assets/filled_circle_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:77d6785bb4a79e6b2c954ab768e846c8a212632fb7a9ad43e678c101b5c73fbb -size 550 diff --git a/assets/filled_diamond_green.png b/assets/filled_diamond_green.png deleted file mode 100644 index 98f0d20..0000000 --- a/assets/filled_diamond_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a11721c0018a2a1742c42b4b42cb36a1c2948118a1aaf1adc5728329676ddd6b -size 407 diff --git a/assets/filled_diamond_purple.png b/assets/filled_diamond_purple.png deleted file mode 100644 index 9065886..0000000 --- a/assets/filled_diamond_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c765f3f8874f3036faa83d33a2c4f41131ed28b408b411617cbdf7dca4a689ae -size 407 diff --git a/assets/filled_diamond_red.png b/assets/filled_diamond_red.png deleted file mode 100644 index b324977..0000000 --- a/assets/filled_diamond_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1c506608c003bab04c7fbdd4699dcbee23cce9b4450e85ea9f2a7c3ea4b774af -size 407 diff --git a/assets/filled_diamond_white.png b/assets/filled_diamond_white.png deleted file mode 100644 index 43439b0..0000000 --- a/assets/filled_diamond_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:089abb23dafac524efee7c7535eb5831713b807ac17b9820d9551d328969c94b -size 523 diff --git a/assets/filled_squiggle_green.png b/assets/filled_squiggle_green.png deleted file mode 100644 index 9fce2ce..0000000 --- a/assets/filled_squiggle_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5b181208d61fda86b2ab87f3407ac01ba7ce07f1c52c324d4eee8182e790910 -size 501 diff --git a/assets/filled_squiggle_purple.png b/assets/filled_squiggle_purple.png deleted file mode 100644 index af6a452..0000000 --- a/assets/filled_squiggle_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0f35e96e119365434bacc419cc9a4575da87e8a8b5665f954e32f0af36380ad4 -size 500 diff --git a/assets/filled_squiggle_red.png b/assets/filled_squiggle_red.png deleted file mode 100644 index 4df2bb9..0000000 --- a/assets/filled_squiggle_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1f2c1735fbb412fdace8546abd52955b1ea5366d128cf104fd6b45c7a0b7937e -size 500 diff --git a/assets/filled_squiggle_white.png b/assets/filled_squiggle_white.png deleted file mode 100644 index f999cff..0000000 --- a/assets/filled_squiggle_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d678f4d032b9fe9ca45122d3ee033bab852572675a77153d46f124bb71afda82 -size 668 diff --git a/assets/its-the-balatro-music.mp3 b/assets/its-the-balatro-music.mp3 deleted file mode 100644 index d8c186d..0000000 --- a/assets/its-the-balatro-music.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3270fdef3f76763eb0350f77b699ba15e2cf042e51854e2f072869f00af9e4ab -size 5459520 diff --git a/assets/its-the-balatro-music.ogg b/assets/its-the-balatro-music.ogg index 4a6c0f5..a9731b1 100644 --- a/assets/its-the-balatro-music.ogg +++ b/assets/its-the-balatro-music.ogg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40d7339cc96ae42734ed3068c532636db5be80eca1716870ade7bf939016b10e -size 1011940 +oid sha256:82cf14359be47d5cf642e74441aed1ac0ab6971bb4bfee0e117bc639dc667199 +size 2905414 diff --git a/assets/open_circle_green.png b/assets/open_circle_green.png deleted file mode 100644 index 85f79e4..0000000 --- a/assets/open_circle_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:320d404ff63cc085a5ae37bcc4a0d81e669a8b6fb4dcef3bb08b6114a71ed67f -size 423 diff --git a/assets/open_circle_purple.png b/assets/open_circle_purple.png deleted file mode 100644 index aabc9b7..0000000 --- a/assets/open_circle_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8ebf92d8f45dc524592e94e5b5d46a2c1c96276b09dfed74910c79adf8322fa -size 422 diff --git a/assets/open_circle_red.png b/assets/open_circle_red.png deleted file mode 100644 index 5b61bd3..0000000 --- a/assets/open_circle_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0d81f6d5726a174015a77df4434eebed31eb07b287914098048a4844229bf0cf -size 422 diff --git a/assets/open_circle_white.png b/assets/open_circle_white.png deleted file mode 100644 index 8717bed..0000000 --- a/assets/open_circle_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b8476786e87b83ae1cc389707e7d3393998e1c3f5f2ec62dfa83f2e425d5ead -size 475 diff --git a/assets/open_diamond_green.png b/assets/open_diamond_green.png deleted file mode 100644 index 7596c26..0000000 --- a/assets/open_diamond_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cde2ef3a8689ccd48fda2d12bbe00e09b83f8a07493fdd29d3ebb5b7a18729d9 -size 440 diff --git a/assets/open_diamond_purple.png b/assets/open_diamond_purple.png deleted file mode 100644 index 76c6015..0000000 --- a/assets/open_diamond_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ca4bb1e52f759cd872f8c764922e622c18a3cf906c401bd06b5d13c193534e45 -size 439 diff --git a/assets/open_diamond_red.png b/assets/open_diamond_red.png deleted file mode 100644 index 001353b..0000000 --- a/assets/open_diamond_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b002cf3695ced26ff1ddee69b883a63d34f967c89380a54fb468eb1b8ff16986 -size 439 diff --git a/assets/open_diamond_white.png b/assets/open_diamond_white.png deleted file mode 100644 index cdd1158..0000000 --- a/assets/open_diamond_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:43c33620bde0301edc9fb44bfa27973a6df23cc4467bfd08a85ba3418f9c4e39 -size 554 diff --git a/assets/open_squiggle_green.png b/assets/open_squiggle_green.png deleted file mode 100644 index 17ed0d3..0000000 --- a/assets/open_squiggle_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7860fad7c506a2e6f1447898cd56ff01843140b6f852ea8063fc502a55652a37 -size 571 diff --git a/assets/open_squiggle_purple.png b/assets/open_squiggle_purple.png deleted file mode 100644 index 05f70fc..0000000 --- a/assets/open_squiggle_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:00d077d6080705a14c446859c40cfb4b5c3077a9ba53a82949fb0a8135f07a80 -size 571 diff --git a/assets/open_squiggle_red.png b/assets/open_squiggle_red.png deleted file mode 100644 index a37964c..0000000 --- a/assets/open_squiggle_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:122e6f4e2f1e875f80ed7415fed3a3ad6270b4139da6c4a71a884ac89113a03a -size 571 diff --git a/assets/open_squiggle_white.png b/assets/open_squiggle_white.png deleted file mode 100644 index 659577b..0000000 --- a/assets/open_squiggle_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b7a6956583ec686946dd205874e8a3618fb1e959a26a49d8241f5e15f84738a -size 694 diff --git a/assets/shaded_circle_green.png b/assets/shaded_circle_green.png deleted file mode 100644 index 2202c35..0000000 --- a/assets/shaded_circle_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:032c9a18e22641108acbba59e9ffcaae9cf3603485f8393d99acba0888f3b100 -size 400 diff --git a/assets/shaded_circle_purple.png b/assets/shaded_circle_purple.png deleted file mode 100644 index d57e626..0000000 --- a/assets/shaded_circle_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f05c7dc140ff1c1e52c2395c163bf8d7ea40919c32333cab271d6c3a17c06347 -size 399 diff --git a/assets/shaded_circle_red.png b/assets/shaded_circle_red.png deleted file mode 100644 index 68e3861..0000000 --- a/assets/shaded_circle_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0a1fcb3adb00a0de8c0bdf6104ad1153bf04328399af99179a2201f51cc84483 -size 399 diff --git a/assets/shaded_circle_white.png b/assets/shaded_circle_white.png deleted file mode 100644 index 1be9bd6..0000000 --- a/assets/shaded_circle_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0f28687434f0a9160ee6e20e2b6f859fee15cef8052f966767880827600022a1 -size 604 diff --git a/assets/shaded_diamond_green.png b/assets/shaded_diamond_green.png deleted file mode 100644 index 36f2f68..0000000 --- a/assets/shaded_diamond_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07c18c268080dbacaf8a868abea145eb08fc5572f756601e3554a38e95ac34ca -size 501 diff --git a/assets/shaded_diamond_purple.png b/assets/shaded_diamond_purple.png deleted file mode 100644 index 08146f7..0000000 --- a/assets/shaded_diamond_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a15720e3c21b58497e702a877b8375ddb7abf952b55b1904148c662147de236 -size 500 diff --git a/assets/shaded_diamond_red.png b/assets/shaded_diamond_red.png deleted file mode 100644 index e0796cc..0000000 --- a/assets/shaded_diamond_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cf9e65b32f81e8bf7a219d95910f798f00e28454ffca58494dbcbccf5d4f2392 -size 500 diff --git a/assets/shaded_diamond_white.png b/assets/shaded_diamond_white.png deleted file mode 100644 index 3909dba..0000000 --- a/assets/shaded_diamond_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e46f7f4f8d7d2c7baed9c435bb017f7344c2d9641cd72db7c814887f95421436 -size 705 diff --git a/assets/shaded_squiggle_green.png b/assets/shaded_squiggle_green.png deleted file mode 100644 index 0f3a961..0000000 --- a/assets/shaded_squiggle_green.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9cf08cfda0fbd1e3323246ca60e872e9ecf10e721b06083e68e1f1b52ab4b70b -size 545 diff --git a/assets/shaded_squiggle_purple.png b/assets/shaded_squiggle_purple.png deleted file mode 100644 index a8410f7..0000000 --- a/assets/shaded_squiggle_purple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ea26f29f8b62d09f587826d677c489a93d2b673f2b6c0c1ab0b7121ca7f2f26d -size 544 diff --git a/assets/shaded_squiggle_red.png b/assets/shaded_squiggle_red.png deleted file mode 100644 index a237e45..0000000 --- a/assets/shaded_squiggle_red.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:93c5056012e6a5d37225be4237fdb8bf7dc3a34b52d656bda68181d84749d3bd -size 544 diff --git a/assets/shaded_squiggle_white.png b/assets/shaded_squiggle_white.png deleted file mode 100644 index c02f929..0000000 --- a/assets/shaded_squiggle_white.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eec48622174d79d3116fd4f564298eb417d98846d81f71ceb604efdfa4184995 -size 798 diff --git a/flake.nix b/flake.nix index e905f10..6ef3091 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,7 @@ overlays = [ (import rust-overlay) ]; pkgs = (import nixpkgs) { inherit system overlays; + config.allowUnfree = true; }; naersk' = pkgs.callPackage naersk { }; buildInputs = with pkgs; [ @@ -42,6 +43,7 @@ wasm-pack wasm-bindgen-cli simple-http-server + aseprite ] ++ buildInputs ++ nativeBuildInputs; in rec { diff --git a/src/debug.rs b/src/debug.rs index 1224639..6f96a8d 100644 --- a/src/debug.rs +++ b/src/debug.rs @@ -1,4 +1,4 @@ -use bevy::{color::palettes::css::BLACK, prelude::*, window::WindowResized}; +use bevy::prelude::*; use crate::deck::Card; @@ -8,7 +8,6 @@ pub struct DebugPlugin; impl Plugin for DebugPlugin { fn build(&self, app: &mut App) { app.add_observer(track_card_info) - .add_systems(Update, update_window_info) .add_systems(Startup, init_ui); } } @@ -16,9 +15,6 @@ impl Plugin for DebugPlugin { #[derive(Component)] pub(crate) struct DebugText; -#[derive(Component)] -pub(crate) struct WindowInfoText; - fn init_ui(mut commands: Commands) { commands .spawn(( @@ -36,45 +32,6 @@ fn init_ui(mut commands: Commands) { PickingBehavior::IGNORE, )); }); - - commands - .spawn(( - Node { - position_type: PositionType::Absolute, - top: Val::Px(0.0), - right: Val::Px(0.0), - ..default() - }, - BackgroundColor(BLACK.into()), - GlobalZIndex(1), - )) - .with_children(|parent| { - parent - .spawn(Button) - .with_children(|parent| { - parent.spawn(( - Text("-".into()), - TextFont { - font_size: 60.0, - ..default() - }, - )); - }) - .observe(decrease_scale_ratio); - parent - .spawn(Button) - .with_children(|parent| { - parent.spawn(( - Text("+".into()), - TextFont { - font_size: 60.0, - ..default() - }, - )); - }) - .observe(increase_scale_ratio); - parent.spawn((Text("????x????".to_string()), WindowInfoText)); - }); } fn track_card_info( @@ -114,42 +71,3 @@ pub(crate) fn hide_debug_card( *v = Visibility::Hidden; }); } - -fn update_window_info( - mut events: EventReader, - windows: Query<&mut Window>, - mut infos: Query<&mut Text, With>, -) { - events.read().for_each(|_| { - info!("Window resized"); - let window = windows.single(); - let width = window.resolution.width(); - let height = window.resolution.height(); - let scale_factor = window.resolution.scale_factor(); - - let mut info = infos.single_mut(); - info.0 = format!("{:.0}x{:.0} ({:.03})", width, height, scale_factor,); - }); -} - -fn increase_scale_ratio( - _trigger: Trigger>, - // TODO: Move window scale factor out to non-debug system - mut windows: Query<&mut Window>, -) { - info!("increase scale ratio"); - let mut window = windows.single_mut(); - let current = window.scale_factor(); - window.resolution.set_scale_factor(current + 0.05); -} - -fn decrease_scale_ratio( - _trigger: Trigger>, - // TODO: Move window scale factor out to non-debug system - mut windows: Query<&mut Window>, -) { - info!("decrease scale ratio"); - let mut window = windows.single_mut(); - let current = window.scale_factor(); - window.resolution.set_scale_factor(current - 0.05); -} diff --git a/src/deck.rs b/src/deck.rs index 28b317f..ee52942 100644 --- a/src/deck.rs +++ b/src/deck.rs @@ -1,7 +1,4 @@ -use bevy::{ - prelude::*, - utils::{HashMap, RandomState}, -}; +use bevy::{prelude::*, utils::HashMap}; /// Deck and Cards pub struct DeckPlugin; @@ -82,33 +79,66 @@ pub(crate) struct Card { impl Card { pub(crate) fn sprite(&self) -> (String, TextureAtlasLayout, u8) { - let fname = { - let col = match self.color { - ItemColor::Red => "red", - ItemColor::Green => "green", - ItemColor::Purple => "purple", + // Spritesheet contains all cards ordered like so: + // | squiggle | diamond | oval | + // | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | + // | open green + // | open blue + // | open red + // | shaded green + // | shaded blue + // | shaded red + // | filled green + // | filled blue + // | filled red + // with all sprites being 20x32 + // we have 12 rows and 9 columns total + // so the col + row for 1+open+red+squiggle is col 0 + row 3 + // and the col + row for 3 filled blue oval is col 8 + row 11 + + let num = { + let row = { + let pattern_row = match self.pattern { + ItemPattern::Open => 0, + ItemPattern::Striped => 1, + ItemPattern::Solid => 2, + }; + let color_row = match self.color { + ItemColor::Green => 0, + ItemColor::Purple => 1, + ItemColor::Red => 2, + }; + (3 * pattern_row) + color_row + 3 }; - let pat = match self.pattern { - ItemPattern::Solid => "filled", - ItemPattern::Striped => "shaded", - ItemPattern::Open => "open", - }; - let shape = match self.shape { - ItemShape::Oval => "circle", - ItemShape::Diamond => "diamond", - ItemShape::Squiggle => "squiggle", + + let col = { + let shape_col = match self.shape { + ItemShape::Squiggle => 0, + ItemShape::Diamond => 1, + ItemShape::Oval => 2, + }; + let number_col = match self.number { + ItemNumber::One => 0, + ItemNumber::Two => 1, + ItemNumber::Three => 2, + }; + (3 * shape_col) + number_col }; - format!("{}_{}_{}.png", pat, shape, col) - }; - let num = match self.number { - ItemNumber::One => 0, - ItemNumber::Two => 1, - ItemNumber::Three => 2, + info!("Row: {:?} Col: {:?}", row, col); + assert!(row < 12); + assert!(row > 2); + assert!(col < 9); + + // Figure out the sprite number based on row + col + (9 * row) + col }; + info!("Index: {:?}", num); + assert!(num < 108); + let size = UVec2 { x: 20, y: 32 }; - let layout = TextureAtlasLayout::from_grid(size, 3, 1, None, None); + let layout = TextureAtlasLayout::from_grid(size, 9, 12, None, None); - (fname, layout, num) + ("cards.png".into(), layout, num) } } diff --git a/src/main.rs b/src/main.rs index 4d180df..8e87c6f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,7 +30,7 @@ fn main() { setup::SetupPlugin, play::PlayPlugin, menu::MenuPlugin, - // debug::DebugPlugin, + debug::DebugPlugin, )) .init_state::() .run(); diff --git a/src/menu.rs b/src/menu.rs index 27594b4..b8c3abc 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -3,14 +3,12 @@ use bevy::{ color::palettes::css::{BLACK, WHITE}, prelude::*, - utils::{hashbrown::hash_map::DefaultHashBuilder, tracing::field::debug}, }; use crate::{ - boot, debug, + boot, deck::{Card, Deck, ItemColor, ItemNumber, ItemPattern, ItemShape}, - play::{self, check_for_sets, check_set, DeckOrder, PlayLocation, SetNumber}, - setup::setup_cards, + play::{check_for_sets, check_set, DeckOrder, PlayLocation, SetNumber}, view::{button_set_state, ViewState}, }; diff --git a/src/play.rs b/src/play.rs index 088cbe6..60b7c2f 100644 --- a/src/play.rs +++ b/src/play.rs @@ -228,20 +228,23 @@ pub(crate) fn place_card( trigger: Trigger, mut query: Query<(&PlayLocation, &mut Visibility, &mut Transform)>, ) { - let (PlayLocation { x, y }, mut visibility, mut transform) = - query.get_mut(trigger.entity()).unwrap(); + let (pl, mut visibility, mut transform) = query.get_mut(trigger.entity()).unwrap(); // Set it's transform based on it's placement + transform.translation = card_placement(pl); + + // Set it to visible + *visibility = Visibility::Inherited; +} + +pub(crate) fn card_placement(PlayLocation { x, y }: &PlayLocation) -> Vec3 { let card_size = [100.0, 160.0]; let offset = Vec2::new(card_size[0] * 4.0, card_size[1] * 4.0) / 2.5; - transform.translation = Vec3::new( + Vec3::new( ((*x as f32) * card_size[0]) - offset.x, ((*y as f32) * card_size[1]) - offset.y, 0.0, - ); - - // Set it to visible - *visibility = Visibility::Inherited; + ) } pub(crate) fn check_for_sets( diff --git a/src/setup.rs b/src/setup.rs index 4b675fd..c1afcfe 100644 --- a/src/setup.rs +++ b/src/setup.rs @@ -119,6 +119,24 @@ fn setup_animations( .insert("rotate".into(), (graph_handle, animation_index)); } + { + // Pre-req: requires deck location and helper function for each spot's placement + // For each spot on board + // Move from deck location (TBD) to spot + // For each card + // Assign this curve to the target + // todo!("Setup deal animations"); + } + + { + // Pre-req: requires discard location and helper function for each spot's placement + // For each spot on board + // Move from spot location to discard pile (location TBD) + // For each card + // Assign this curve to the target + // todo!("Setup discard animations"); + } + commands.insert_resource(animation_store); // Card Animations: // active_card_animation = AnimationClip::default() // simple rotation