Files
aee-arcade/source/game/entities/concrete/dust.hpp
T

37 lines
1.1 KiB
C++

#pragma once
#include <cstdint>
#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_;
};