aboutsummaryrefslogtreecommitdiff
path: root/src/aosfxplayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/aosfxplayer.cpp')
-rw-r--r--src/aosfxplayer.cpp108
1 files changed, 8 insertions, 100 deletions
diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp
index 127bda63..8c4f3c86 100644
--- a/src/aosfxplayer.cpp
+++ b/src/aosfxplayer.cpp
@@ -1,14 +1,12 @@
#include "aosfxplayer.h"
#include "file_functions.h"
-
AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app)
{
m_parent = parent;
ao_app = p_ao_app;
}
-#if defined(BASSAUDIO) // Using bass.dll for sfx
void AOSfxPlayer::clear()
{
for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) {
@@ -68,9 +66,16 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout,
set_volume_internal(m_volume);
- if (ao_app->get_audio_output_device() != "default")
+ BASS_ChannelSetDevice(m_stream_list[m_channel], BASS_GetDevice());
+ int f_bass_error = BASS_ErrorGetCode();
+ if (f_bass_error == BASS_ERROR_DEVICE) {
+ ao_app->doBASSreset();
BASS_ChannelSetDevice(m_stream_list[m_channel], BASS_GetDevice());
+ }
+
BASS_ChannelPlay(m_stream_list[m_channel], false);
+ BASS_ChannelSetSync(m_stream_list[channel], BASS_SYNC_DEV_FAIL, 0,
+ ao_app->BASSreset, 0);
}
void AOSfxPlayer::stop(int channel)
@@ -112,100 +117,3 @@ void AOSfxPlayer::set_looping(bool toggle, int channel)
BASS_SAMPLE_LOOP); // set the LOOP flag
}
}
-#elif defined(QTAUDIO) // Using Qt's QSoundEffect class
-
-void AOSfxPlayer::clear()
-{
- for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) {
- m_stream_list[n_stream].stop();
- }
- set_volume_internal(m_volume);
-}
-
-void AOSfxPlayer::loop_clear()
-{
- for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) {
- m_stream_list[n_stream].stop();
- }
- set_volume_internal(m_volume);
-}
-
-void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout,
- int channel)
-{
- m_stream_list[channel].stop();
-
- QString misc_path = "";
- QString char_path = "";
- QString sound_path = ao_app->get_sounds_path(p_sfx);
-
- if (shout != "")
- misc_path = ao_app->get_base_path() + "misc/" + shout + "/" + p_sfx;
- if (p_char != "")
- char_path = ao_app->get_character_path(p_char, p_sfx);
-
- QString f_path;
-
- if (file_exists(char_path))
- f_path = char_path;
- else if (file_exists(misc_path))
- f_path = misc_path;
- else
- f_path = sound_path;
-
- if (file_exists(f_path)) // if its missing, it will glitch out
- {
- m_stream_list[channel].setSource(QUrl::fromLocalFile(f_path));
-
- set_volume_internal(m_volume);
-
- m_stream_list[channel].play();
- }
-}
-
-void AOSfxPlayer::stop(int channel)
-{
- if (channel == -1) {
- channel = m_channel;
- }
- m_stream_list[channel].stop();
-}
-
-void AOSfxPlayer::set_volume(qreal p_value)
-{
- m_volume = p_value / 100;
- set_volume_internal(m_volume);
-}
-
-void AOSfxPlayer::set_volume_internal(qreal p_value)
-{
- float volume = static_cast<float>(p_value);
- for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) {
- m_stream_list[n_stream].setVolume(volume);
- }
-}
-
-void AOSfxPlayer::set_looping(bool toggle, int channel)
-{
- if (channel == -1) {
- channel = m_channel;
- }
- m_looping = toggle;
- // TODO
-}
-#else
-void AOSfxPlayer::clear() {}
-
-void AOSfxPlayer::loop_clear() {}
-
-void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout,
- int channel) {}
-
-void AOSfxPlayer::stop(int channel) {}
-
-void AOSfxPlayer::set_volume(qreal p_value) {}
-
-void AOSfxPlayer::set_volume_internal(qreal p_value) {}
-
-void AOSfxPlayer::set_looping(bool toggle, int channel) {}
-#endif