diff options
Diffstat (limited to 'src/aomusicplayer.h')
| -rw-r--r-- | src/aomusicplayer.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/aomusicplayer.h b/src/aomusicplayer.h new file mode 100644 index 00000000..248a45e3 --- /dev/null +++ b/src/aomusicplayer.h @@ -0,0 +1,44 @@ +#pragma once + +#include "aoapplication.h" + +#include <QFutureWatcher> + +class AOMusicPlayer +{ +public: + // Channel 0 = music + // Channel 1 = ambience + static constexpr int CHANNEL_COUNT = 2; + + AOMusicPlayer(AOApplication *p_ao_app); + virtual ~AOMusicPlayer(); + + void set_volume(int p_value, int channel = -1); + void set_looping(bool loop_song, int channel = 0); + void set_muted(bool toggle); + + QFutureWatcher<QString> music_watcher; + +public Q_SLOTS: + QString play(QString p_song, int channel = 0, bool loop = false, int effect_flags = 0); + void stop(int channel = 0); + +private: + AOApplication *ao_app; + + bool m_muted = false; + int m_volume[CHANNEL_COUNT] = {0, 0}; + HSTREAM m_stream_list[CHANNEL_COUNT]; + HSYNC m_loop_sync[CHANNEL_COUNT]; + + /** + * @brief The starting sample of the AB-Loop. + */ + unsigned int m_loop_start[CHANNEL_COUNT] = {0, 0}; + + /** + * @brief The end sample of the AB-Loop. + */ + unsigned int m_loop_end[CHANNEL_COUNT] = {0, 0}; +}; |
