Files
Nuake-custom/Nuake/src/Audio/AudioManager.h
2023-04-04 01:39:23 -04:00

49 lines
744 B
C++

#pragma once
#include "src/Core/Core.h"
#include <mutex>
#include <thread>
namespace SoLoud
{
class Soloud;
class AudioSource;
}
namespace Nuake
{
// This is a singleton that manages everything for audio.
class AudioManager
{
private:
Ref<SoLoud::Soloud> _soloud;
bool _audioThreadRunning;
std::thread _audioThread;
std::mutex _audioMutex;
const int MAX_VOICE_COUNT = 32;
public:
AudioManager() = default;
~AudioManager();
static AudioManager& Get()
{
static AudioManager instance;
return instance;
}
void Initialize();
void Deinitialize();
// Volume
float GetVolume() const;
void SetVolume(float volume);
void PlayTTS(const std::string& text);
private:
void AudioThreadLoop();
};
}