Bubba-3D  0.9.0
Awesome game engine!
AudioManager.h
1 /*
2  * This file is part of Bubba-3D.
3  *
4  * Bubba-3D is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Bubba-3D is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with Bubba-3D. If not, see http://www.gnu.org/licenses/.
16  */
17 //
18 // Created by johan on 2016-01-16.
19 //
20 
21 #ifndef SUPER_BUBBA_AWESOME_SPACE_AUDIOMANAGER_H
22 #define SUPER_BUBBA_AWESOME_SPACE_AUDIOMANAGER_H
23 
24 #include <map>
25 #include <sstream>
26 #include <SFML/Audio.hpp>
27 
28 class AudioManager {
29 public:
30  template<typename Type>
31  static Type* getItemFromMap(std::map<std::string, Type> *map, std::string id) ;
32 
33  static sf::Sound* loadAndFetchSound(const std::string &fileName);
34  static sf::Music* loadAndFetchMusic(const std::string &fileName);
35 
36 private:
37  static std::map<std::string, sf::Music*> musics;
38  static std::map<std::string, sf::SoundBuffer> soundBuffers;
39 
40  static void loadSoundBuffer(const std::string &fileName);
41  static sf::Sound* getSoundBuffer(std::string fileName);
42 
43  static void loadMusic(const std::string &fileName);
44  static sf::Music* getMusic(std::string fileName);
45 };
46 
47 #endif //SUPER_BUBBA_AWESOME_SPACE_AUDIOMANAGER_H