ASAPCabinetFE
 
Loading...
Searching...
No Matches
pulseaudio_player.h
1
10#ifndef PULSEAUDIO_PLAYER_H
11#define PULSEAUDIO_PLAYER_H
12
13#include "isound_manager.h"
14#include <string>
15#include <unordered_map>
16#include <memory>
17#include <SDL2/SDL_mixer.h>
18#include <random>
19
30public:
38 PulseAudioPlayer(const Settings& settings);
39
45 ~PulseAudioPlayer() override;
46
52 void loadSounds() override;
53
59 void playUISound(const std::string& key) override;
60
66 void playAmbienceMusic(const std::string& path) override;
67
73 void playTableMusic(const std::string& path) override;
74
80 void playCustomLaunch(const std::string& path) override;
81
85 void stopMusic() override;
86
90 void applyAudioSettings() override;
91
97 void updateSettings(const Settings& newSettings) override;
98
99private:
100 std::string cachedAmbiencePath_;
101 std::string cachedTableMusicPath_;
102 std::string cachedLaunchAudioPath_;
103 Settings settings_;
104
105 // Enum to track which type of music is currently intended to be playing by our manager
106 enum class MusicType {
107 None,
108 Ambience,
109 Table,
110 Launch
111 };
112 MusicType currentPlayingMusicType_;
113
114 // Separate storage for UI sounds (Mix_Chunk) and music (Mix_Music)
115 std::unordered_map<std::string, std::unique_ptr<Mix_Chunk, void(*)(Mix_Chunk*)>> uiSounds_;
116 std::unique_ptr<Mix_Music, void(*)(Mix_Music*)> ambienceMusic_;
117 std::unique_ptr<Mix_Music, void(*)(Mix_Music*)> tableMusic_;
118 std::unique_ptr<Mix_Music, void(*)(Mix_Music*)> launchAudio_;
119 std::mt19937 rng_;
120 std::uniform_real_distribution<double> dist_;
121
128 std::string trim(const std::string& str);
129};
130
131#endif // PULSEAUDIO_PLAYER_H
Interface for managing sound operations.
Definition isound_manager.h:14
Manages all sound operations for the application.
Definition pulseaudio_player.h:29
~PulseAudioPlayer() override
Destroys the PulseAudioPlayer instance and cleans up all SDL_mixer resources.
Definition pulseaudio_player.cpp:55
void playTableMusic(const std::string &path) override
Plays the table-specific music.
Definition pulseaudio_player.cpp:173
void applyAudioSettings() override
Applies the current audio settings (volumes, mute states) to all active sound types.
Definition pulseaudio_player.cpp:248
void loadSounds() override
Loads all necessary sound resources based on current settings.
Definition pulseaudio_player.cpp:71
void updateSettings(const Settings &newSettings) override
Updates the internal settings and reloads sounds if necessary.
Definition pulseaudio_player.cpp:283
void playAmbienceMusic(const std::string &path) override
Plays the background ambience music.
Definition pulseaudio_player.cpp:129
void stopMusic() override
Stops any currently playing background music (ambience or table music).
Definition pulseaudio_player.cpp:240
void playCustomLaunch(const std::string &path) override
Plays the custom launch audio.
Definition pulseaudio_player.cpp:210
void playUISound(const std::string &key) override
Plays a specific UI sound effect.
Definition pulseaudio_player.cpp:117
Definition settings.h:12