aboutsummaryrefslogtreecommitdiff
path: root/src/aosfxplayer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/aosfxplayer.h')
-rw-r--r--src/aosfxplayer.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/aosfxplayer.h b/src/aosfxplayer.h
new file mode 100644
index 00000000..6a71a71c
--- /dev/null
+++ b/src/aosfxplayer.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include "bass.h"
+#include "bassopus.h"
+
+#include "aoapplication.h"
+
+#include <QDebug>
+#include <QWidget>
+
+class AOSfxPlayer
+{
+public:
+ static constexpr int CHANNEL_COUNT = 5;
+
+ AOSfxPlayer(AOApplication *p_ao_app);
+
+ int get_volume();
+
+ void clear();
+ void loop_clear();
+ void play(QString p_sfx, QString p_char = QString(), QString shout = QString());
+ void stop(int channel = -1);
+ void set_volume(qreal p_volume);
+ void set_looping(bool toggle, int channel = -1);
+ void set_muted(bool toggle);
+
+private:
+ AOApplication *ao_app;
+
+ qreal m_volume = 0.0;
+ bool m_looping = true;
+ bool m_muted = false;
+ int m_channel = 0;
+ HSTREAM m_stream_list[CHANNEL_COUNT]{};
+
+ void set_volume_internal(qreal p_volume);
+};