diff options
| author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-27 12:05:45 -0500 |
|---|---|---|
| committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-27 12:05:45 -0500 |
| commit | 1656242563d14fa564bab8d4bc40054ab8998553 (patch) | |
| tree | 872589408ac7aef54b1959dc53b946fbed9dfcaa /src/mixer.h | |
| parent | e644f5c0d769989bd3b0665312c6949d76f5e388 (diff) | |
| download | tanetane-1656242563d14fa564bab8d4bc40054ab8998553.tar.gz tanetane-1656242563d14fa564bab8d4bc40054ab8998553.tar.bz2 tanetane-1656242563d14fa564bab8d4bc40054ab8998553.zip | |
Added background music (defined on a per-map basis)
Diffstat (limited to 'src/mixer.h')
| -rw-r--r-- | src/mixer.h | 36 |
1 files changed, 36 insertions, 0 deletions
| diff --git a/src/mixer.h b/src/mixer.h index 7f6ef72..b049118 100644 --- a/src/mixer.h +++ b/src/mixer.h | |||
| @@ -52,6 +52,16 @@ public: | |||
| 52 | 52 | ||
| 53 | using chunk_ptr = std::unique_ptr<Mix_Chunk, chunk_deleter>; | 53 | using chunk_ptr = std::unique_ptr<Mix_Chunk, chunk_deleter>; |
| 54 | 54 | ||
| 55 | class music_deleter { | ||
| 56 | public: | ||
| 57 | |||
| 58 | void operator()(Mix_Music* music) { | ||
| 59 | Mix_FreeMusic(music); | ||
| 60 | } | ||
| 61 | }; | ||
| 62 | |||
| 63 | using music_ptr = std::unique_ptr<Mix_Music, music_deleter>; | ||
| 64 | |||
| 55 | // MUST create the Renderer first! | 65 | // MUST create the Renderer first! |
| 56 | class Mixer { | 66 | class Mixer { |
| 57 | public: | 67 | public: |
| @@ -62,12 +72,38 @@ public: | |||
| 62 | 72 | ||
| 63 | void stopChannel(int channel); | 73 | void stopChannel(int channel); |
| 64 | 74 | ||
| 75 | // name is the name of the file, not containing the extension | ||
| 76 | // ms is the time in milliseconds to fade in | ||
| 77 | void playMusic(std::string_view name, int ms = 0); | ||
| 78 | |||
| 79 | bool isPlayingMusic() const { return !playingTrack_.empty(); } | ||
| 80 | |||
| 81 | const std::string& getPlayingTrack() const { return playingTrack_; } | ||
| 82 | |||
| 83 | void fadeoutMusic(int ms); | ||
| 84 | |||
| 85 | void muteMusic(); | ||
| 86 | |||
| 87 | void unmuteMusic(); | ||
| 88 | |||
| 89 | bool isMusicMuted() const { return musicMuted_; } | ||
| 90 | |||
| 91 | void pauseMusic(); | ||
| 92 | |||
| 93 | void unpauseMusic(); | ||
| 94 | |||
| 65 | private: | 95 | private: |
| 66 | 96 | ||
| 67 | Mix_Chunk* getChunkByFilename(std::string filename); | 97 | Mix_Chunk* getChunkByFilename(std::string filename); |
| 68 | 98 | ||
| 99 | Mix_Music* getMusicByName(std::string_view name); | ||
| 100 | |||
| 69 | mix_wrapper mix_; | 101 | mix_wrapper mix_; |
| 70 | std::map<std::string, chunk_ptr> sounds_; | 102 | std::map<std::string, chunk_ptr> sounds_; |
| 103 | std::map<std::string, music_ptr> music_; | ||
| 104 | std::string playingTrack_; | ||
| 105 | int musicVolume_ = MIX_MAX_VOLUME; | ||
| 106 | bool musicMuted_ = false; | ||
| 71 | }; | 107 | }; |
| 72 | 108 | ||
| 73 | #endif /* end of include guard: MIXER_H_6DF82000 */ | 109 | #endif /* end of include guard: MIXER_H_6DF82000 */ |
