22 #include "AudioManager.h" 27 std::map<std::string, sf::Music*> AudioManager::musics;
28 std::map<std::string, sf::SoundBuffer> AudioManager::soundBuffers;
31 sf::Sound* AudioManager::loadAndFetchSound(
const std::string &fileName){
33 return getSoundBuffer(fileName);
34 }
catch (std::invalid_argument exception) {
35 loadSoundBuffer(fileName);
36 return getSoundBuffer(fileName);
40 void AudioManager::loadSoundBuffer(
const std::string &fileName) {
41 sf::SoundBuffer soundBuffer;
42 soundBuffer.loadFromFile(fileName);
44 soundBuffers.insert(std::pair<std::string, sf::SoundBuffer>(fileName, soundBuffer));
47 sf::Sound* AudioManager::getSoundBuffer(std::string fileName){
48 sf::SoundBuffer *soundBuffer = getItemFromMap(&soundBuffers, fileName);
49 sf::Sound *sound =
new sf::Sound();
50 sound->setBuffer(*soundBuffer);
55 sf::Music* AudioManager::loadAndFetchMusic(
const std::string &fileName) {
57 return getMusic(fileName);
58 }
catch (std::invalid_argument exception) {
60 return getMusic(fileName);
64 void AudioManager::loadMusic(
const std::string &fileName) {
65 sf::Music *music =
new sf::Music();
66 music->openFromFile(fileName);
68 musics.insert(std::pair<std::string, sf::Music*>(fileName, music));
71 sf::Music* AudioManager::getMusic(std::string fileName) {
72 return *getItemFromMap(&musics, fileName);
75 template<
typename Type>
76 Type* AudioManager::getItemFromMap(std::map<std::string, Type> *map, std::string
id) {
77 typename std::map<std::string, Type>::iterator it = map->find(
id);
78 if( it != map->end()) {
81 std::stringstream errorMessage;
82 errorMessage <<
id <<
" hasn't been loaded into AudioManager before fetched";
83 throw std::invalid_argument(errorMessage.str());