r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
Audio.hpp
Go to the documentation of this file.
1///
2/// @file Systems.hpp
3/// @brief This file contains the system definitions
4/// @namespace cli
5///
6
7#pragma once
8
9#include "ECS/Component.hpp"
10#include "ECS/Registry.hpp"
11#include "Interfaces/IAudio.hpp"
12
13namespace cli
14{
15
16 ///
17 /// @class AudioSystem
18 /// @brief Class for managing entities and their components
19 /// @namespace ecs
20 ///
21 class AudioSystem final : public eng::ASystem
22 {
23 public:
24 explicit AudioSystem(eng::IAudio &audio) : m_audio(audio) {}
25 ~AudioSystem() override = default;
26
27 AudioSystem(const AudioSystem &) = delete;
28 AudioSystem &operator=(const AudioSystem &) = delete;
31
32 void update(ecs::Registry &registry, float /* dt */) override
33 {
34 for (auto &[entity, audio] : registry.getAll<ecs::Audio>())
35 {
36 m_audio.setVolume(audio.id + std::to_string(entity), audio.volume);
37 m_audio.setLoop(audio.id + std::to_string(entity), audio.loop);
38 if (audio.play && m_audio.isPlaying(audio.id + std::to_string(entity)) != eng::Status::Playing)
39 {
40 m_audio.playAudio(audio.id + std::to_string(entity));
41 }
42 else if (!audio.play &&
43 m_audio.isPlaying(audio.id + std::to_string(entity)) != eng::Status::Stopped)
44 {
45 m_audio.stopAudio(audio.id + std::to_string(entity));
46 }
47 }
48 }
49
50 private:
52 }; // class AudioSystem
53
54} // namespace cli
This file contains the component definitions.
This file contains the Audio interface.
This file contains the Registry class declaration.
Class for managing entities and their components.
Definition Audio.hpp:22
void update(ecs::Registry &registry, float) override
Definition Audio.hpp:32
eng::IAudio & m_audio
Definition Audio.hpp:51
AudioSystem(AudioSystem &&)=delete
AudioSystem(const AudioSystem &)=delete
AudioSystem(eng::IAudio &audio)
Definition Audio.hpp:24
AudioSystem & operator=(AudioSystem &&)=delete
~AudioSystem() override=default
AudioSystem & operator=(const AudioSystem &)=delete
Class for managing entities and their components.
Definition Registry.hpp:25
std::unordered_map< Entity, T > & getAll()
Definition Registry.hpp:77
Interface for the audio.
Definition IAudio.hpp:29
virtual void setVolume(const std::string &name, float volume)=0
virtual void playAudio(const std::string &name)=0
virtual Status isPlaying(const std::string &name)=0
virtual void setLoop(const std::string &name, bool loop)=0
virtual void stopAudio(const std::string &name)=0