r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
WinCondition.hpp
Go to the documentation of this file.
1///
2/// @file WinCondition.hpp
3/// @brief This file contains the win condition scene
4/// @namespace cli
5///
6
7#pragma once
8
9#include <vector>
10
12#include "Interfaces/IAudio.hpp"
13#include "Utils/Clock.hpp"
14
15namespace cli
16{
17 ///
18 /// @class WinCondition
19 /// @brief Win condition scene with beautiful animations
20 /// @namespace cli
21 ///
22 class WinCondition final : public eng::AScene
23 {
24 public:
25 WinCondition(eng::id assignedId, const std::shared_ptr<eng::IRenderer> &renderer,
26 const std::shared_ptr<eng::IAudio> &audio);
27 ~WinCondition() override = default;
28
29 WinCondition(const WinCondition &other) = delete;
30 WinCondition &operator=(const WinCondition &other) = delete;
31 WinCondition(WinCondition &&other) = delete;
33
34 void update(float dt, const eng::WindowSize &size) override;
35 void event(const eng::Event &event) override;
36
37 bool &playMusic() { return m_playMusic; }
38
39 std::function<void()> onLeave;
40
41 private:
42 struct Particle
43 {
44 float x;
45 float y;
46 float vx;
47 float vy;
48 float lifetime;
51 };
52
53 std::shared_ptr<eng::IRenderer> m_renderer;
54 std::shared_ptr<eng::IAudio> m_audio;
55 float m_elapsedTime = 0.F;
56 float m_titlePulseTime = 0.F;
58
59 bool m_playMusic = false;
60
66
67 std::vector<Particle> m_particles;
68
70 }; // class WinCondition
71} // namespace cli
This file contains the Clock class.
This file contains the Audio interface.
Win condition scene with beautiful animations.
WinCondition(const WinCondition &other)=delete
std::shared_ptr< eng::IAudio > m_audio
WinCondition & operator=(WinCondition &&other)=delete
std::vector< Particle > m_particles
ecs::Entity m_iconEntity
ecs::Entity m_titleEntity
ecs::Entity m_subtitleEntity
~WinCondition() override=default
std::function< void()> onLeave
ecs::Entity m_soundEntity
WinCondition(eng::id assignedId, const std::shared_ptr< eng::IRenderer > &renderer, const std::shared_ptr< eng::IAudio > &audio)
WinCondition & operator=(const WinCondition &other)=delete
WinCondition(WinCondition &&other)=delete
std::shared_ptr< eng::IRenderer > m_renderer
void event(const eng::Event &event) override
ecs::Entity m_instructionEntity
void update(float dt, const eng::WindowSize &size) override
Abstract class for scene.
Definition IScene.hpp:52
Class for clock.
Definition Clock.hpp:21
This file contains the IScene class.
std::uint32_t Entity
Definition Entity.hpp:13
unsigned int id
Definition IScene.hpp:20