feat(effects): polvet transitori al despegue i a l'aterratge
This commit is contained in:
1 parent
c38c80753a
commit
3e379ce129
11 files changed
+209
-1
No files matched your search
@@ -0,0 +1,36 @@
|
||||
#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_;
|
||||
};
|
||||
Reference in new issue
Block a user