aboutsummaryrefslogtreecommitdiff
path: root/src/aosfxplayer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/aosfxplayer.h')
-rw-r--r--src/aosfxplayer.h37
1 files changed, 22 insertions, 15 deletions
diff --git a/src/aosfxplayer.h b/src/aosfxplayer.h
index 6a71a71c..59969569 100644
--- a/src/aosfxplayer.h
+++ b/src/aosfxplayer.h
@@ -11,28 +11,35 @@
class AOSfxPlayer
{
public:
- static constexpr int CHANNEL_COUNT = 5;
+ static constexpr int STREAM_COUNT = 5;
- AOSfxPlayer(AOApplication *p_ao_app);
+ AOSfxPlayer(AOApplication *ao_app);
- int get_volume();
+ int volume();
+ void setVolume(int value);
- 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);
+ void play(QString path);
+ void stop(int streamId = -1);
+ void stopAll();
+ void stopAllLoopingStream();
+
+ void findAndPlaySfx(QString sfx);
+ void findAndPlayCharacterSfx(QString sfx, QString character);
+ void findAndPlayCharacterShout(QString shout, QString character, QString group);
+
+ void setMuted(bool toggle);
+ void setLooping(bool toggle, int streamId = -1);
private:
AOApplication *ao_app;
- qreal m_volume = 0.0;
- bool m_looping = true;
+ int m_volume = 0;
bool m_muted = false;
- int m_channel = 0;
- HSTREAM m_stream_list[CHANNEL_COUNT]{};
+ bool m_looping = true;
+ HSTREAM m_stream[STREAM_COUNT]{};
+ int m_current_stream_id = 0;
- void set_volume_internal(qreal p_volume);
+ int maybeFetchCurrentStreamId(int streamId);
+ bool ensureValidStreamId(int streamId);
+ void updateInternalVolume();
};