From ad3e5804959b1fbbbc638fbab8ae41b0fc12c4ee Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Fri, 12 Sep 2025 11:56:11 -0400 Subject: [PATCH] Animations are refactored to let me spawn in an 'attack animation' but I think the data model is wrong. Rather than spawning in an animation every time I can probably just make one, reposition it, then tell it to play. I'll have to try it. --- animation.cpp | 37 ++++++++++++----- animation.hpp | 4 +- assets/animations.json | 14 ++++++- assets/config.json | 9 +++- assets/enemies.json | 15 ------- assets/sprites/burning_animation.png | Bin 0 -> 70613 bytes assets/sprites/lightning_animation.png | Bin 0 -> 21504 bytes components.hpp | 7 +++- gui/fsm.cpp | 1 + gui/ritual_ui.cpp | 5 +-- raycaster.cpp | 5 ++- scripts/build_assets.ps1 | 6 +-- systems.cpp | 55 ++++++++++++++++++------- systems.hpp | 3 ++ tests/animation.cpp | 4 +- 15 files changed, 109 insertions(+), 56 deletions(-) create mode 100644 assets/sprites/burning_animation.png create mode 100644 assets/sprites/lightning_animation.png diff --git a/animation.cpp b/animation.cpp index 732295a..a2bd3c2 100644 --- a/animation.cpp +++ b/animation.cpp @@ -70,18 +70,17 @@ namespace animation { static AnimationManager MGR; static bool initialized = false; - bool apply(Animation& anim, SpriteTexture& target) { - auto size = target.texture->getSize(); - anim.frame_width = int(size.x) / (unsigned int)anim.frames; - sf::IntRect rect{{0,0}, {anim.frame_width, int(size.y)}}; + bool apply(Animation& anim, sf::Sprite& sprite) { + sf::IntRect rect{{0,0}, {anim.frame_width, anim.frame_height}}; sf::Vector2f scale{1.0, 1.0}; sf::Vector2f pos{0, 0}; anim.step(scale, pos, rect); - target.sprite->setTextureRect(rect); - target.sprite->setPosition(pos); - target.sprite->setScale(scale); + sprite.setTextureRect(rect); + sprite.setPosition(pos); + sprite.setScale(scale); + return anim.playing; } @@ -99,11 +98,27 @@ namespace animation { void init() { if(!initialized) { - Config config("assets/animations.json"); + Config animations("assets/animations.json"); + Config config("assets/config.json"); + auto& sprites = config["sprites"]; - for(auto& [name, data] : config.json().items()) { - auto anim = components::convert(data); - MGR.animations.insert_or_assign(name, anim); + for(auto& [name, data] : animations.json().items()) { + try { + auto anim = components::convert(data); + auto& sprite_config = sprites[name]; + + anim.frame_width = sprite_config["frame_width"]; + anim.frame_height = sprite_config["frame_height"]; + + dbc::check(anim.frame_width > 0 && anim.frame_height > 0, + fmt::format("invalid frame width/height for animation: {}", + name)); + + MGR.animations.insert_or_assign(name, anim); + } catch(...) { + dbc::log(fmt::format("error in sprite config: {}", name)); + throw; + } } initialized = true; diff --git a/animation.hpp b/animation.hpp index 869cbed..8486e29 100644 --- a/animation.hpp +++ b/animation.hpp @@ -4,14 +4,14 @@ #include "easings.hpp" #include "dinkyecs.hpp" #include - +#include namespace animation { struct AnimationManager { std::unordered_map animations; }; - bool apply(components::Animation& anim, textures::SpriteTexture& target); + bool apply(components::Animation& anim, sf::Sprite& target); void rotate(sf::Sprite& target, float degrees); void center(sf::Sprite& target, sf::Vector2f pos); diff --git a/assets/animations.json b/assets/animations.json index adc47c0..3cd40a6 100644 --- a/assets/animations.json +++ b/assets/animations.json @@ -1,5 +1,5 @@ { - "burning_effect": { + "burning_animation": { "_type": "Animation", "easing": 0, "ease_rate": 0.5, @@ -9,7 +9,17 @@ "speed": 0.1, "stationary": false }, - "ritual_blanket": { + "lightning_animation": { + "_type": "Animation", + "easing": 0, + "ease_rate": 0.5, + "scale": 1.0, + "simple": false, + "frames": 5, + "speed": 0.5, + "stationary": false + }, + "ritual_crafting_area": { "_type": "Animation", "easing": 0, "ease_rate": 0.5, diff --git a/assets/config.json b/assets/config.json index e056740..0f215bd 100644 --- a/assets/config.json +++ b/assets/config.json @@ -30,8 +30,13 @@ "hp_status_00": "assets/sounds/hp_status_00.ogg" }, "sprites": { - "burning_effect": - {"path": "assets/sprites/burning_effect.png", + "burning_animation": + {"path": "assets/sprites/burning_animation.png", + "frame_width": 256, + "frame_height": 256 + }, + "lightning_animation": + {"path": "assets/sprites/lightning_animation.png", "frame_width": 256, "frame_height": 256 }, diff --git a/assets/enemies.json b/assets/enemies.json index 3188eec..9d12a8c 100644 --- a/assets/enemies.json +++ b/assets/enemies.json @@ -12,21 +12,6 @@ {"_type": "LightSource", "strength": 35, "radius": 2.0} ] }, - "FLAME_BLOB": { - "components": [ - {"_type": "Tile", "display": 10899, - "foreground": "enemies/fg:gold_savior", - "background": "color:transparent" - }, - {"_type": "Combat", "hp": 20, "max_hp": 20, "damage": 1, "dead": false}, - {"_type": "Collision", "has": true}, - {"_type": "Motion", "dx": 0, "dy": 0, "random": false}, - {"_type": "EnemyConfig", "ai_script": "Enemy::actions", "ai_start_name": "Enemy::initial_state", "ai_goal_name": "Enemy::final_state"}, - {"_type": "Personality", "hearing_distance": 5, "tough": true}, - {"_type": "Sprite", "name": "burning_effect", "width": 256, "height": 256, "width": 256, "height": 256, "scale": 1.0}, - {"_type": "Sound", "attack": "fireball_01", "death": "fireball_01"} - ] - }, "GOLD_SAVIOR": { "components": [ {"_type": "Tile", "display": 42586, diff --git a/assets/sprites/burning_animation.png b/assets/sprites/burning_animation.png new file mode 100644 index 0000000000000000000000000000000000000000..d96dbef749956e146de96250f80b1f60e01b3d9d GIT binary patch literal 70613 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

`nBkq{iQEPrB5ma^Idlf2C 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 D)yIqe literal 0 HcmV?d00001 diff --git a/assets/sprites/lightning_animation.png b/assets/sprites/lightning_animation.png new file mode 100644 index 0000000000000000000000000000000000000000..03b4d63cc375ffbc43632e203096cf9e5ddce55e GIT binary patch literal 21504 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 literal 0 HcmV?d00001 diff --git a/components.hpp b/components.hpp index 0dfd885..30336fb 100644 --- a/components.hpp +++ b/components.hpp @@ -26,6 +26,10 @@ namespace components { std::shared_ptr effect; }; + struct Temporary { + bool is = true; + }; + struct Collision { bool has = true; }; @@ -124,7 +128,8 @@ namespace components { float subframe = 0.0f; bool looped = false; // BUG: this is weirdly not used in most animations but also named wrong should be frame_width - int frame_width = TEXTURE_WIDTH; + int frame_width = -1; + int frame_height = -1; void play(); float twitching(); diff --git a/gui/fsm.cpp b/gui/fsm.cpp index 276b2aa..9c09dd2 100644 --- a/gui/fsm.cpp +++ b/gui/fsm.cpp @@ -412,6 +412,7 @@ namespace gui { draw_gui(); } + System::clear_attack(); $window.display(); } diff --git a/gui/ritual_ui.cpp b/gui/ritual_ui.cpp index e535bc5..76e283d 100644 --- a/gui/ritual_ui.cpp +++ b/gui/ritual_ui.cpp @@ -45,7 +45,7 @@ namespace gui { $ritual_ui = textures::get_sprite("ritual_crafting_area"); $ritual_ui.sprite->setPosition($gui.get_position()); $ritual_ui.sprite->setTextureRect($ritual_closed_rect); - $ritual_anim = animation::load("ritual_blanket"); + $ritual_anim = animation::load("ritual_crafting_area"); auto open_close_toggle = $gui.entity("ritual_ui"); $gui.set(open_close_toggle, { @@ -84,7 +84,6 @@ namespace gui { } } - void UI::CLOSED(Event ev) { if(ev == Event::TOGGLE) { $ritual_anim.play(); @@ -95,7 +94,7 @@ namespace gui { void UI::OPENING(Event ev) { if(ev == Event::TICK) { - if(!animation::apply($ritual_anim, $ritual_ui)) { + if(!animation::apply($ritual_anim, *$ritual_ui.sprite)) { state(State::OPENED); } } diff --git a/raycaster.cpp b/raycaster.cpp index 8f119d7..c02b1e1 100644 --- a/raycaster.cpp +++ b/raycaster.cpp @@ -108,7 +108,6 @@ void Raycaster::sprite_casting(sf::RenderTarget &target) { auto world = $level.world; $level.collision->distance_sorted($sprite_order, {(size_t)$pos_x, (size_t)$pos_y}, RENDER_DISTANCE); - // after sorting the sprites, do the projection for(auto& rec : $sprite_order) { if(!$sprites.contains(rec.entity)) continue; @@ -184,6 +183,10 @@ void Raycaster::sprite_casting(sf::RenderTarget &target) { int d = y * texture_height - $height * half_height + sprite_height * half_height; int tex_y = ((d * texture_height) / sprite_height) / texture_height; + // BUG: this data could be put into the world + // as frame data, then just have a system that + // constantly applies this to any sprite that + // has an animation and is visible sf::Vector2f origin{texture_width / 2.0f, texture_height / 2.0f}; sf::Vector2f scale{sprite_scale_w, sprite_scale_h}; sf::Vector2f position{x + origin.x * scale.x, y + origin.y * scale.y}; diff --git a/scripts/build_assets.ps1 b/scripts/build_assets.ps1 index aadd03e..a7f69c3 100644 --- a/scripts/build_assets.ps1 +++ b/scripts/build_assets.ps1 @@ -25,9 +25,9 @@ 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 "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 cp -recurse -force C:\Users\lcthw\Pictures\Games\Renders\Raycaster\UI assets\ui diff --git a/systems.cpp b/systems.cpp index 3987231..2b0883e 100644 --- a/systems.cpp +++ b/systems.cpp @@ -27,8 +27,6 @@ using namespace DinkyECS; using lighting::LightSource; void System::set_position(World& world, SpatialMap& collision, Entity entity, Position pos) { - dbc::check(world.has(entity), "entity doesn't have tile"); - world.set(entity, pos); bool has_collision = world.has(entity); collision.insert(pos.location, entity, has_collision); @@ -238,11 +236,6 @@ void System::combat(int attack_id) { auto& level = GameDB::current_level(); auto& collider = *level.collision; auto& world = *level.world; - auto& the_belt = world.get_the(); - - if(!the_belt.has(attack_id)) return; - - auto& ritual = the_belt.get(attack_id); const auto& player_pos = GameDB::player_position(); auto& player_combat = world.get(level.player); @@ -272,13 +265,7 @@ void System::combat(int attack_id) { }; if(result.player_did > 0) { - using enum ritual::Element; - - if(ritual.element == FIRE || ritual.element == LIGHTNING) { - auto effect = shaders::get( - ritual.element == FIRE ? "flame" : "lightning"); - world.set(enemy.entity, {100, effect}); - } + spawn_attack(world, attack_id); } if(enemy_action == combat::BattleAction::ATTACK) { @@ -656,3 +643,43 @@ gui::Event System::shortest_rotate(Point player_at, Point aiming_at, Point targe return normalized < 180.0 ? gui::Event::ROTATE_LEFT : gui::Event::ROTATE_RIGHT; } + +void System::clear_attack() { + auto world = GameDB::current_world(); + std::vector dead_anim; + + world->query([&](auto ent, auto& anim, auto&) { + if(!anim.playing) dead_anim.push_back(ent); + }); + + for(auto ent : dead_anim) { + world->remove(ent); + world->remove(ent); + world->remove(ent); + remove_from_world(ent); + } +} + +void System::spawn_attack(World& world, int attack_id) { + using enum ritual::Element; // for FIRE vs LIGHTNING + auto& the_belt = world.get_the(); + + dbc::check(the_belt.has(attack_id), "STOP passing invalid attack IDs to the system."); + + auto& ritual = the_belt.get(attack_id); + + auto effect = ritual.element == FIRE ? "burning_animation" : "lightning_animation"; + + auto effect_id = world.entity(); + world.set(effect_id, {effect, 256, 256, 1.0}); + world.set(effect_id, {true}); + + auto shader = shaders::get(ritual.element == FIRE ? "flame" : "lightning"); + world.set(effect_id, {100, shader}); + + auto anim = animation::load(effect); + anim.play(); + world.set(effect_id, anim); + + drop_item(effect_id); +} diff --git a/systems.hpp b/systems.hpp index dbbbbdd..41198a8 100644 --- a/systems.hpp +++ b/systems.hpp @@ -71,4 +71,7 @@ namespace System { paths.compute_paths(walls); } + + void clear_attack(); + void spawn_attack(World& world, int attack_id); } diff --git a/tests/animation.cpp b/tests/animation.cpp index 3005f9a..5a0b586 100644 --- a/tests/animation.cpp +++ b/tests/animation.cpp @@ -43,11 +43,11 @@ TEST_CASE("animation utility API", "[animation]") { animation::init(); auto blanket = textures::get_sprite("ritual_crafting_area"); - auto anim = animation::load("ritual_blanket"); + auto anim = animation::load("ritual_crafting_area"); anim.play(); - while(animation::apply(anim, blanket)) { + while(animation::apply(anim, *blanket.sprite)) { fmt::println("animation: {}", anim.subframe); } }