#pragma once #include #include "external/fkyaml_node.hpp" #include "game/entities/animation_component.hpp" #include "game/entities/entity.hpp" // Polvet transitori: efecte purament visual que viu una animació i // s'autoelimina (`markDead`) quan acaba. Spawneja el `GameScene` com a // reacció a events `player_jumped` i `player_landed` del bus. Les dues // variants (despegue / aterratge) viuen al mateix YAML amb dues // animacions distintes (`jump` i `land`); l'instància tria una via // `setVariant` just després de construir-se. class Dust : public Entity { public: enum class Variant : std::uint8_t { JUMP, LAND, }; explicit Dust(const fkyaml::node& yaml); // Tria quina animació es reproduirà. Cal cridar-lo abans del primer // `update`; per defecte la variant és JUMP. void setVariant(Variant v); // Tickeja l'animació activa. Quan arriba a `completed()`, marquem // l'entitat morta perquè l'`EntityManager` la purgue al final del // frame. void update(float delta_time) override; private: AnimationComponent anim_jump_; AnimationComponent anim_land_; };