From 7af264e1479ff03983dab9ad7a0a7bcb86f2bc5f Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Mon, 15 Sep 2025 02:14:13 -0400 Subject: [PATCH] Now have a fancy hand animation when you cast your rituals. --- animation.cpp | 5 ++++- assets/animations.json | 10 ++++++++++ assets/config.json | 5 +++++ assets/hands/hands.png | Bin 0 -> 59496 bytes gui/fsm.cpp | 1 + gui/main_ui.cpp | 17 ++++++++++++++++- gui/main_ui.hpp | 5 +++++ scripts/build_assets.ps1 | 3 ++- tests/animation.cpp | 5 ----- 9 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 assets/hands/hands.png diff --git a/animation.cpp b/animation.cpp index a2bd3c2..f0dd2c4 100644 --- a/animation.cpp +++ b/animation.cpp @@ -81,7 +81,6 @@ namespace animation { sprite.setPosition(pos); sprite.setScale(scale); - return anim.playing; } @@ -105,6 +104,10 @@ namespace animation { for(auto& [name, data] : animations.json().items()) { try { auto anim = components::convert(data); + + dbc::check(sprites.contains(name), + fmt::format("animation '{}' doesn't have sprite, spelled wrong in config.json?", name)); + auto& sprite_config = sprites[name]; anim.frame_width = sprite_config["frame_width"]; diff --git a/assets/animations.json b/assets/animations.json index 3cd40a6..71bafe9 100644 --- a/assets/animations.json +++ b/assets/animations.json @@ -9,6 +9,16 @@ "speed": 0.1, "stationary": false }, + "hand": { + "_type": "Animation", + "easing": 0, + "ease_rate": 0.5, + "scale": 1.0, + "simple": false, + "frames": 3, + "speed": 0.1, + "stationary": false + }, "lightning_animation": { "_type": "Animation", "easing": 0, diff --git a/assets/config.json b/assets/config.json index 0f215bd..81f11b0 100644 --- a/assets/config.json +++ b/assets/config.json @@ -229,6 +229,11 @@ {"path": "assets/sprites/dead_body_lootable.png", "frame_width": 256, "frame_height": 256 + }, + "hand": + {"path": "assets/hands/hands.png", + "frame_width": 900, + "frame_height": 600 } }, "worldgen": { diff --git a/assets/hands/hands.png b/assets/hands/hands.png new file mode 100644 index 0000000000000000000000000000000000000000..cb74894ebd6d5c9f1eeec6a5624ba661f1e80b1e GIT binary patch literal 59496 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 JYUkk8{{d`vcK84Q literal 0 HcmV?d00001 diff --git a/gui/fsm.cpp b/gui/fsm.cpp index 9c09dd2..35dae80 100644 --- a/gui/fsm.cpp +++ b/gui/fsm.cpp @@ -243,6 +243,7 @@ namespace gui { run_systems(); break; case ATTACK: + $main_ui.play_hands(); $main_ui.dirty(); sound::play("Sword_Hit_1"); state(State::ATTACKING); diff --git a/gui/main_ui.cpp b/gui/main_ui.cpp index 018df0f..36404ea 100644 --- a/gui/main_ui.cpp +++ b/gui/main_ui.cpp @@ -11,7 +11,9 @@ namespace gui { MainUI::MainUI(sf::RenderWindow& window) : $window(window), - $rayview(std::make_shared(RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT)) + $rayview(std::make_shared(RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT)), + $hand(textures::get_sprite("hand")), + $hand_anim(animation::load("hand")) { $window.setVerticalSyncEnabled(VSYNC); $window.setFramerateLimit(FRAME_LIMIT); @@ -39,6 +41,8 @@ namespace gui { if($mind_reading) render_mind_reading(); $overlay_ui.render($window); + + if($hand_anim.playing) render_hands(); } lel::Cell MainUI::overlay_cell(const std::string& name) { @@ -133,4 +137,15 @@ namespace gui { void MainUI::mouse(int x, int y, guecs::Modifiers mods) { $overlay_ui.$gui.mouse(x, y, mods); } + + void MainUI::play_hands() { + $hand_anim.play(); + } + + void MainUI::render_hands() { + if(animation::apply($hand_anim, *$hand.sprite)) { + $hand.sprite->setPosition({RAY_VIEW_X, RAY_VIEW_Y}); + $window.draw(*$hand.sprite); + } + } } diff --git a/gui/main_ui.hpp b/gui/main_ui.hpp index 354c2c7..48e9804 100644 --- a/gui/main_ui.hpp +++ b/gui/main_ui.hpp @@ -6,6 +6,7 @@ #include "gui/overlay_ui.hpp" #include "gui/debug_ui.hpp" #include "raycaster.hpp" +#include "animation.hpp" #include namespace gui { @@ -19,6 +20,8 @@ namespace gui { sf::RenderWindow& $window; OverlayUI $overlay_ui; std::shared_ptr $rayview; + textures::SpriteTexture $hand; + components::Animation $hand_anim; MainUI(sf::RenderWindow& window); @@ -41,5 +44,7 @@ namespace gui { void dead_entity(DinkyECS::Entity entity); void toggle_mind_reading(); void render_mind_reading(); + void play_hands(); + void render_hands(); }; } diff --git a/scripts/build_assets.ps1 b/scripts/build_assets.ps1 index a7f69c3..fa4ec86 100644 --- a/scripts/build_assets.ps1 +++ b/scripts/build_assets.ps1 @@ -28,6 +28,7 @@ function Build-Images { # Build-Images -Source "Textures" -pixel_count 12 # Build-Images -Source "Sprites" -pixel_count 6 # Build-Images -Source "Items" -pixel_count 2 -Build-Images -Source "Animations" -pixel_count 6 +# Build-Images -Source "Animations" -pixel_count 6 +Build-Images -Source "Hands" -pixel_count 2 cp -recurse -force C:\Users\lcthw\Pictures\Games\Renders\Raycaster\UI assets\ui diff --git a/tests/animation.cpp b/tests/animation.cpp index 5a0b586..c8f208f 100644 --- a/tests/animation.cpp +++ b/tests/animation.cpp @@ -30,11 +30,6 @@ TEST_CASE("animation easing tests", "[animation]") { anim.easing = ease::IN_OUT_BACK; res = anim.twitching(); REQUIRE(!std::isnan(res)); - - anim.easing = ease::FUCKFACE; - bool throws = false; - try { anim.twitching(); } catch(...) { throws = true; } - REQUIRE(throws); }