diff options
Diffstat (limited to 'src/aoblipplayer.cpp')
| -rw-r--r-- | src/aoblipplayer.cpp | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index 7d598b5f..57b2d278 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -9,13 +9,17 @@ AOBlipPlayer::AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app) void AOBlipPlayer::set_blips(QString p_sfx) { - QString f_path = ao_app->get_sounds_path(p_sfx); + QString f_path = ao_app->get_sfx_suffix(ao_app->get_sounds_path(p_sfx)); for (int n_stream = 0; n_stream < 5; ++n_stream) { BASS_StreamFree(m_stream_list[n_stream]); - m_stream_list[n_stream] = BASS_StreamCreateFile( - FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + if (f_path.endsWith(".opus")) + m_stream_list[n_stream] = BASS_OPUS_StreamCreateFile( + FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + else + m_stream_list[n_stream] = BASS_StreamCreateFile( + FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); } set_volume_internal(m_volume); @@ -23,6 +27,10 @@ void AOBlipPlayer::set_blips(QString p_sfx) void AOBlipPlayer::blip_tick() { + if (delay.isValid() && delay.elapsed() < max_blip_ms) + return; + + delay.start(); int f_cycle = m_cycle++; if (m_cycle == 5) @@ -34,15 +42,15 @@ void AOBlipPlayer::blip_tick() BASS_ChannelPlay(f_stream, false); } -void AOBlipPlayer::set_volume(qreal p_value) +void AOBlipPlayer::set_volume(int p_value) { - m_volume = p_value / 100; + m_volume = static_cast<qreal>(p_value) / 100; set_volume_internal(m_volume); } void AOBlipPlayer::set_volume_internal(qreal p_value) { - float volume = p_value; + float volume = static_cast<float>(p_value); for (int n_stream = 0; n_stream < 5; ++n_stream) { BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); @@ -63,12 +71,12 @@ void AOBlipPlayer::set_blips(QString p_sfx) m_blips.setSource(QUrl::fromLocalFile(f_path)); } - set_volume_internal(m_volume); + set_volume(m_volume); } void AOBlipPlayer::blip_tick() { - m_cycle++; + int f_cycle = m_cycle++; if (m_cycle == 5) m_cycle = 0; @@ -76,14 +84,9 @@ void AOBlipPlayer::blip_tick() m_blips.play(); } -void AOBlipPlayer::set_volume(qreal p_value) -{ - m_volume = p_value / 100; - set_volume_internal(m_volume); -} - -void AOBlipPlayer::set_volume_internal(qreal p_value) +void AOBlipPlayer::set_volume(int p_value) { + m_volume = p_value; m_blips.setVolume(m_volume); } #else // No audio @@ -97,7 +100,7 @@ void AOBlipPlayer::set_blips(QString p_sfx) {} void AOBlipPlayer::blip_tick() {} -void AOBlipPlayer::set_volume(qreal p_value) {} +void AOBlipPlayer::set_volume(int p_value) {} void AOBlipPlayer::set_volume_internal(qreal p_value) {} #endif |
