129 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|  *
 | |
|  * @file    audioengine.h
 | |
|  * @author  Clément Mathieu--Drif
 | |
|  * @date    Septembre 2020
 | |
|  * @version 1.0
 | |
|  * @brief   Gestionnaire audio de minGL
 | |
|  *
 | |
|  **/
 | |
| 
 | |
| #ifndef AUDIOENGINE_H
 | |
| #define AUDIOENGINE_H
 | |
| 
 | |
| #include <memory>
 | |
| #include <list>
 | |
| #include <SFML/Audio.hpp> // based on SFML
 | |
| 
 | |
| /**
 | |
|  * @namespace nsAudio
 | |
|  * @brief Espace de nom pour les utilitaires audio. Il est conseillé d'utiliser des fichiers .wav
 | |
|  */
 | |
| namespace nsAudio
 | |
| {
 | |
| /**
 | |
|  * @class AudioEngine
 | |
|  * @brief Une classe de gestion des effets audio et de la musique
 | |
|  */
 | |
| class AudioEngine
 | |
| {
 | |
| 
 | |
| public:
 | |
|     /**
 | |
|      * @brief Définit le fichier audio de la musique
 | |
|      * @param[in] fileName : nom du fichier
 | |
|      * @param[in] loop : indique si la musique est lue en boucle ou non (oui par défaut)
 | |
|      * @fn void setMusic(const std::string& fileName, bool loop = true);
 | |
|      */
 | |
|     void setMusic(const std::string& fileName, bool loop = true);
 | |
| 
 | |
|     /**
 | |
|      * @brief Met en pause ou relance la musique
 | |
|      * @fn void toggleMusicPlaying();
 | |
|      */
 | |
|     void toggleMusicPlaying();
 | |
| 
 | |
|     /**
 | |
|      * @brief Règle l'état de lecture de la musique
 | |
|      * @param[in] playing : Nouvel état de lecture
 | |
|      * @fn void setMusicPlaying(bool playing);
 | |
|      */
 | |
|     void setMusicPlaying(bool playing);
 | |
| 
 | |
|     /**
 | |
|      * @brief Récupère l'état de lecture de la musique
 | |
|      * @fn bool isMusicPlaying() const;
 | |
|      */
 | |
|     bool isMusicPlaying() const;
 | |
| 
 | |
|     /**
 | |
|      * @brief Charge un fichier audio dans un buffer
 | |
|      * @fn void loadSound(const std::string & fileName);
 | |
|      */
 | |
|     void loadSound(const std::string& fileName);
 | |
| 
 | |
|     /**
 | |
|      * @brief Retire un buffer de la liste
 | |
|      * @fn void removeBuffer(const std::string & fileName);
 | |
|      */
 | |
|     void removeBuffer(const std::string & fileName);
 | |
| 
 | |
|     /**
 | |
|      * @brief Vide la liste des buffers
 | |
|      * @fn void emptyBufferList();
 | |
|      */
 | |
|     void emptyBufferList();
 | |
| 
 | |
|     /**
 | |
|      * @brief Relance la musique depuis le début
 | |
|      * @fn void startMusicFromBeginning();
 | |
|      */
 | |
|     void startMusicFromBeginning();
 | |
| 
 | |
|     /**
 | |
|      * @brief Joue un son depuis un buffer
 | |
|      * @param[in] fileName : nom du fichier
 | |
|      * @fn void playSoundFromBuffer(const std::string& fileName);
 | |
|      */
 | |
|     void playSoundFromBuffer(const std::string& fileName);
 | |
| 
 | |
|     /**
 | |
|      * @brief Joue un son depuis un fichier
 | |
|      * @param[in] fileName : nom du fichier
 | |
|      * @fn void playSoundFromFile(const std::string& fileName);
 | |
|      */
 | |
|     void playSoundFromFile(const std::string& fileName);
 | |
| 
 | |
| private:
 | |
|     /**
 | |
|      * @brief m_buffers : Liste des buffers utilisés par les éléments de m_sounds
 | |
|      */
 | |
|     std::list<std::pair<std::string, sf::SoundBuffer>> m_buffers;
 | |
| 
 | |
|     /**
 | |
|      * @brief m_sounds : Liste des effets audio en cours de lecture depuis des buffers
 | |
|      */
 | |
|     std::list<sf::Sound> m_sounds;
 | |
| 
 | |
|     /**
 | |
|      * @brief m_soundsFromFiles : Liste des effets audio en cours de lecture depuis des fichiers
 | |
|      */
 | |
|     std::list<sf::Music> m_soundsFromFiles;
 | |
| 
 | |
|     /**
 | |
|      * @brief m_music : Musique principale
 | |
|      */
 | |
|     sf::Music m_music;
 | |
| 
 | |
|     /**
 | |
|      * @brief Retire les sons terminés des listes m_sounds et m_soundsFromFiles
 | |
|      * @fn void removeOldSounds();
 | |
|      */
 | |
|     void removeOldSounds();
 | |
| 
 | |
| }; // class AudioEngine
 | |
| 
 | |
| } // namespace nsAudio
 | |
| 
 | |
| #endif // AUDIOENGINE_H
 |