AudioManager.cpp

Namespaces

Name

Source code

/*
** EPITECH PROJECT, 2022
** rtype
** File description:
** AudioManager
*/

#include "AudioManager.hpp"
#include "AssetLoader.hpp"

namespace audio
{
    AudioManager &AudioManager::getInstance()
    {
        static AudioManager _Instance;
        return _Instance;
    }

    bool AudioManager::loadBGM(const std::string &key)
    {
        try {
            asset::AssetLoader::GetBGM(getInstance()._currentBGMKey).stop();
            asset::AssetLoader::GetBGM(key).setVolume(getInstance()._BGMVolume);
            asset::AssetLoader::GetBGM(key).setLoop(true);
            asset::AssetLoader::GetBGM(key).play();
            getInstance()._currentBGMKey = key;
        } catch (const std::exception &e) {
            return false;
        }
        return true;
    }

    bool AudioManager::playBGM(bool loop)
    {
        try {
            asset::AssetLoader::GetBGM(getInstance()._currentBGMKey).setLoop(loop);
            asset::AssetLoader::GetBGM(getInstance()._currentBGMKey).play();
        } catch (const std::exception &e) {
            return false;
        }
        return true;
    }

    bool AudioManager::stopBGM()
    {
        try {
            asset::AssetLoader::GetBGM(getInstance()._currentBGMKey).stop();
        } catch (const std::exception &e) {
            return false;
        }
        return true;
    }

    bool AudioManager::setBGMVolume(float volume)
    {
        try {
            asset::AssetLoader::GetBGM(getInstance()._currentBGMKey).setVolume(volume);
            getInstance()._BGMVolume = volume;
        } catch (const std::exception &e) {
            return false;
        }
        return true;
    }

    float AudioManager::getBGMVolume() { return getInstance()._BGMVolume; }

    sf::SoundSource::Status AudioManager::getBGMStatus()
    {
        return asset::AssetLoader::GetBGM(getInstance()._currentBGMKey).getStatus();
    }

    void AudioManager::loopBGM(bool loop)
    {
        try {
            asset::AssetLoader::GetBGM(getInstance()._currentBGMKey).setLoop(loop);
        } catch (const std::exception &e) {
            return;
        }
    }

    void AudioManager::loadSFX(const std::string &key)
    {
        try {
            asset::AssetLoader::GetSFX(key).setVolume(getInstance()._SFXVolume);
            getInstance()._currentSFXKey = key;
        } catch (const std::exception &e) {
            return;
        }
    }

    void AudioManager::playSFX(const std::string &key)
    {
        try {
            asset::AssetLoader::GetSFX(key).setVolume(getInstance()._SFXVolume);
            asset::AssetLoader::GetSFX(key).play();
        } catch (const std::exception &e) {
            return;
        }
    }

    void AudioManager::setSFXVolume(float volume) { getInstance()._SFXVolume = volume; }

    float AudioManager::getSFXVolume() { return getInstance()._SFXVolume; }

}; // namespace audio

Updated on 2022-11-13 at 17:21:37 +0100

Last updated