ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
AudioManager.h
浏览该文件的文档.
1#pragma once
2
3#include <string>
4#include <unordered_map>
5#include <memory>
6#include <SDL3_mixer/SDL_mixer.h>
7
9
10namespace Shit {
11 class AudioManager final {
12 friend class ResourceManager;
13 public:
14 AudioManager(const AudioManager&) = delete;
18 ~AudioManager() { clearAudio(); }
19
20 private:
21 AudioManager() = default;
22
23 struct MIXAudioDeleter {
24 void operator()(MIX_Audio* audio) const {
25 if (audio) MIX_DestroyAudio(audio);
26 }
27 };
28
29 MIX_Audio* loadAudio(const std::string& filePath);
30 MIX_Audio* getAudio(const std::string& filePath);
31 void unloadAudio(const std::string& filePath);
32 void clearAudio();
33 void setMixer(MIX_Mixer* mixer) { m_mixer = mixer; }
34
35 MIX_Mixer* m_mixer = nullptr;
36 std::unordered_map<std::string, std::unique_ptr<MIX_Audio, MIXAudioDeleter>> m_audioCache;
37 };
38}
~AudioManager()
定义 AudioManager.h:18
friend class ResourceManager
定义 AudioManager.h:12
AudioManager(const AudioManager &)=delete
AudioManager(AudioManager &&)=default
AudioManager & operator=(AudioManager &&)=default
AudioManager & operator=(const AudioManager &)=delete
定义 AudioPlayer.h:9