From 71da60b5d6f77629b73fd232f97bed2ecaefb4c3 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 20:14:54 +0100 Subject: [PATCH] sfx tested and works --- include/aosfxplayer.h | 40 +++++++++++++++++++++++ src/aosfxplayer.cpp | 76 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 110 insertions(+), 6 deletions(-) diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 30cbe9d..5b82534 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -1,13 +1,19 @@ #ifndef AOSFXPLAYER_H #define AOSFXPLAYER_H +#if defined(BASSAUDIO) #include "bass.h" +#elif defined(QTAUDIO) +#include +#endif + #include "aoapplication.h" #include #include #include +#if defined(BASSAUDIO) class AOSfxPlayer { public: @@ -24,5 +30,39 @@ private: int m_volume = 0; HSTREAM m_stream; }; +#elif defined(QTAUDIO) +class AOSfxPlayer +{ +public: + AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); + + void play(QString p_sfx, QString p_char = "", QString shout = ""); + void stop(); + void set_volume(int p_volume); + +private: + QSoundEffect m_sfx; + QWidget *m_parent; + AOApplication *ao_app; + + int m_volume = 0; +}; +#else +class AOSfxPlayer +{ +public: + AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); + + void play(QString p_sfx, QString p_char = "", QString shout = ""); + void stop(); + void set_volume(int p_volume); + +private: + QWidget *m_parent; + AOApplication *ao_app; + + int m_volume = 0; +}; +#endif #endif // AOSFXPLAYER_H diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 869fa9b..077767b 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -1,6 +1,7 @@ #include "aosfxplayer.h" #include "file_functions.h" +#if defined(BASSAUDIO) //Using bass.dll for sfx AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) { m_parent = parent; @@ -9,7 +10,6 @@ AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) { - #ifdef BASSAUDIO BASS_ChannelStop(m_stream); QString misc_path = ""; @@ -37,21 +37,85 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); -#endif } void AOSfxPlayer::stop() { - #ifdef BASSAUDIO BASS_ChannelStop(m_stream); - #endif } void AOSfxPlayer::set_volume(int p_value) { m_volume = p_value; float volume = p_value / 100.0f; - #ifdef BASSAUDIO BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); - #endif } +#elif defined(QTAUDIO) //Using Qt's QSoundEffect class +AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) +{ + m_sfx.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; + + m_sfx.setSource(QUrl::fromLocalFile(f_path)); + + set_volume(m_volume); + + m_sfx.play(); +} + +void AOSfxPlayer::stop() +{ + m_sfx.stop(); +} + +void AOSfxPlayer::set_volume(int p_value) +{ + m_volume = p_value; + float volume = p_value / 100.0f; + m_sfx.setVolume(volume); +} +#else +AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) +{ + +} + +void AOSfxPlayer::stop() +{ + +} + +void AOSfxPlayer::set_volume(int p_value) +{ + +} +#endif