JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
AudioEngine.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <cstddef>
7#include <filesystem>
8#include <memory>
9#include <string>
10#include <unordered_map>
11#include <vector>
12
13class QSoundEffect;
14
19
20namespace hmi {
21
37public:
41 enum class ForceMuted { Yes };
42
46
48 explicit AudioEngine(ForceMuted);
49
51
52 AudioEngine(const AudioEngine&) = delete;
56
59 [[nodiscard]] bool muted() const noexcept {
60 return _muted;
61 }
62
69 void setVolume(float volume);
70
72 [[nodiscard]] float volume() const noexcept {
73 return _volume;
74 }
75
89 void preload(const std::string& id, const std::filesystem::path& file);
90
101 void play(const std::string& id);
102
103private:
106 static constexpr std::size_t MAX_INSTANCES_PER_EVENT = 3;
107
108 struct Sample {
109 std::vector<std::unique_ptr<QSoundEffect>> instances;
110 std::size_t nextInstance = 0;
111 };
112
113 std::unordered_map<std::string, Sample> _samples;
114 float _volume = 1.0f;
115 bool _muted = false;
116};
117
118} // namespace hmi
bool _muted
Definition AudioEngine.h:115
AudioEngine(const AudioEngine &)=delete
float volume() const noexcept
Definition AudioEngine.h:72
AudioEngine(AudioEngine &&)=delete
void play(const std::string &id)
Joue l'échantillon préchargé sous cet identifiant.
Definition AudioEngine.cpp:62
bool muted() const noexcept
Definition AudioEngine.h:59
AudioEngine()
Ouvre le périphérique de sortie par défaut.
Definition AudioEngine.cpp:23
void setVolume(float volume)
Règle le volume global, appliqué immédiatement à tous les échantillons préchargés.
Definition AudioEngine.cpp:37
void preload(const std::string &id, const std::filesystem::path &file)
Précharge un échantillon sous un identifiant logique.
Definition AudioEngine.cpp:46
AudioEngine & operator=(const AudioEngine &)=delete
AudioEngine & operator=(AudioEngine &&)=delete
ForceMuted
Étiquette du constructeur qui force l'état « muet », sans tenter d'ouvrir de périphérique — réservé a...
Definition AudioEngine.h:41
@ Yes
Definition AudioEngine.h:41
float _volume
Definition AudioEngine.h:114
static constexpr std::size_t MAX_INSTANCES_PER_EVENT
Nombre d'instances préchargées par événement — plafonne le recouvrement audible d'un même son déclenc...
Definition AudioEngine.h:106
std::unordered_map< std::string, Sample > _samples
Definition AudioEngine.h:113
Definition AudioEngine.cpp:15
Definition AudioEngine.h:108
std::vector< std::unique_ptr< QSoundEffect > > instances
Definition AudioEngine.h:109
std::size_t nextInstance
Tourniquet : prochaine instance a reutiliser.
Definition AudioEngine.h:110