diff options
| author | oldmud0 <oldmud0@users.noreply.github.com> | 2018-12-15 11:02:12 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-15 11:02:12 -0600 |
| commit | de6877409714417c8fb29d66d1ae1ef098b82644 (patch) | |
| tree | db79ef284b2223daa1bee48056a96a81310945bf /aosfxplayer.cpp | |
| parent | 3ef743da7b8071e0dc4b1189cbe131f65f11b5de (diff) | |
| parent | 6d1ea9d81fc02fbc481d93af549003db954aa1f7 (diff) | |
Merge pull request #33 from AttorneyOnline/mega-merge
AOV/Case Cafe feature parity
Diffstat (limited to 'aosfxplayer.cpp')
| -rw-r--r-- | aosfxplayer.cpp | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/aosfxplayer.cpp b/aosfxplayer.cpp index cc2f383..90e458e 100644 --- a/aosfxplayer.cpp +++ b/aosfxplayer.cpp @@ -1,41 +1,49 @@ #include "aosfxplayer.h" +#include "file_functions.h" AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) { - m_sfxplayer = new QSoundEffect; m_parent = parent; ao_app = p_ao_app; } -AOSfxPlayer::~AOSfxPlayer() +void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) { - m_sfxplayer->stop(); - m_sfxplayer->deleteLater(); -} + QString misc_path = ""; + QString char_path = ""; + QString sound_path = ao_app->get_sounds_path(p_sfx); -void AOSfxPlayer::play(QString p_sfx, QString p_char) -{ - m_sfxplayer->stop(); - p_sfx = p_sfx.toLower(); - QString f_path; + if (shout != "") + misc_path = ao_app->get_base_path() + "misc/" + shout + "/" + p_sfx; if (p_char != "") - f_path = ao_app->get_character_path(p_char) + p_sfx; + 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 = ao_app->get_sounds_path() + p_sfx; + f_path = sound_path; + + m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); - m_sfxplayer->setSource(QUrl::fromLocalFile(f_path)); set_volume(m_volume); - m_sfxplayer->play(); + if (ao_app->get_audio_output_device() != "default") + BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); + BASS_ChannelPlay(m_stream, false); } void AOSfxPlayer::stop() { - m_sfxplayer->stop(); + BASS_ChannelStop(m_stream); } void AOSfxPlayer::set_volume(int p_value) { m_volume = p_value; - m_sfxplayer->setVolume(p_value / 100.0); + float volume = p_value / 100.0f; + BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); } |
