diff --git a/cockatrice/src/dlg_settings.cpp b/cockatrice/src/dlg_settings.cpp index 0d5fe8ec..a28f63b5 100644 --- a/cockatrice/src/dlg_settings.cpp +++ b/cockatrice/src/dlg_settings.cpp @@ -774,7 +774,7 @@ SoundSettingsPage::SoundSettingsPage() masterVolumeSlider->setValue(settingsCache->getMasterVolume()); masterVolumeSlider->setToolTip(QString::number(settingsCache->getMasterVolume())); connect(settingsCache, SIGNAL(masterVolumeChanged(int)), this, SLOT(masterVolumeChanged(int))); - connect(masterVolumeSlider, SIGNAL(sliderReleased()), soundEngine, SLOT(playerJoined())); + connect(masterVolumeSlider, SIGNAL(sliderReleased()), soundEngine, SLOT(testSound())); connect(masterVolumeSlider, SIGNAL(valueChanged(int)), settingsCache, SLOT(setMasterVolume(int))); diff --git a/cockatrice/src/soundengine.cpp b/cockatrice/src/soundengine.cpp index 68d37d4a..324c8ba2 100644 --- a/cockatrice/src/soundengine.cpp +++ b/cockatrice/src/soundengine.cpp @@ -1,130 +1,73 @@ #include "soundengine.h" #include "settingscache.h" -#include -#include -#include -#include -#include -#if QT_VERSION > 0x050000 - #include - #include -#endif -SoundEngine::SoundEngine(QObject *parent) -: QObject(parent), audio(0) -{ - enabled = false; - inputBuffer = new QBuffer(this); - - connect(settingsCache, SIGNAL(soundPathChanged()), this, SLOT(cacheData())); - connect(settingsCache, SIGNAL(soundEnabledChanged()), this, SLOT(soundEnabledChanged())); - cacheData(); - soundEnabledChanged(); -} +#include +#include -void SoundEngine::cacheData() -{ +/* fileNames = QStringList() - /*Phases*/ + // Phases << "untap_step" << "upkeep_step" << "draw_step" << "main_1" << "start_combat" << "attack_step" << "block_step" << "damage_step" << "end_combat" << "main_2" << "end_step" - /*Game Actions*/ + // Game Actions << "draw_card" << "play_card" << "tap_card" << "untap_card" << "shuffle" << "roll_dice" << "life_change" - /*Player*/ + // Player << "player_join" << "player_leave" << "player_disconnect" << "player_reconnect" << "player_concede" - /*Spectator*/ + // Spectator << "spectator_join" << "spectator_leave" - /*Chat & UI*/ + // Chat & UI << "chat_mention" << "all_mention" << "private_message"; +*/ - #if QT_VERSION < 0x050000 //QT4 - for (int i = 0; i < fileNames.size(); ++i) { - QFile file(settingsCache->getSoundPath() + "/" + fileNames[i] + ".wav"); - if(!file.exists()) - continue; - file.open(QIODevice::ReadOnly); - file.seek(44); - audioCache.insert(fileNames[i], file.readAll()); - file.close(); - } - #else //QT5 - QStringList ext = QStringList() << ".mp4" << ".mp3" << ".wav"; - for (int i = 0; i < fileNames.size(); ++i) { - for (int j = 0; j < ext.size(); ++j) { - QString filepath = settingsCache->getSoundPath() + "/" + fileNames[i] + ext[j]; - QFile file(filepath); - if (file.exists()){ - QMediaPlayer *player = new QMediaPlayer; - player->setMedia(QUrl::fromLocalFile(filepath)); - audioData.insert(fileNames[i], player); - break; - } - } - } - #endif +#define TEST_SOUND_FILENAME "player_join" + +SoundEngine::SoundEngine(QObject *parent) +: QObject(parent), enabled(false) +{ + connect(settingsCache, SIGNAL(soundEnabledChanged()), this, SLOT(soundEnabledChanged())); + + soundEnabledChanged(); } void SoundEngine::soundEnabledChanged() { + if (settingsCache->getSoundEnabled()) { #if QT_VERSION < 0x050000 //QT4 - if (settingsCache->getSoundEnabled()) { + if(QSound::isAvailable()) + { + qDebug("SoundEngine: enabling sound"); + enabled = true; + } else { + qDebug("SoundEngine: sound not available"); + enabled = false; + } +#else qDebug("SoundEngine: enabling sound"); - QAudioFormat format; - format.setSampleRate(44100); - format.setChannelCount(1); - format.setSampleSize(16); - format.setCodec("audio/pcm"); - format.setByteOrder(QAudioFormat::LittleEndian); - format.setSampleType(QAudioFormat::SignedInt); - audio = new QAudioOutput(format, this); - } else if (audio) { - qDebug("SoundEngine: disabling sound"); - audio->stop(); - audio->deleteLater(); - audio = 0; - } -#else //QT5 - if (settingsCache->getSoundEnabled()) { - qDebug("SoundEngine: enabling sound"); - enabled = true; - }else{ + enabled = true; +#endif + } else { qDebug("SoundEngine: disabling sound"); enabled = false; - for (int i = 0; i < fileNames.size(); ++i) { - if (audioData.contains(fileNames[i]) && - audioData[fileNames[i]]->state() != QMediaPlayer::StoppedState) - audioData[fileNames[i]]->stop(); - } } -#endif } +#include void SoundEngine::playSound(QString fileName) { -#if QT_VERSION < 0x050000 //QT4 - if (!fileNames.contains(fileName) || !audio) + if(!enabled) return; - - audio->stop(); - inputBuffer->close(); - inputBuffer->setData(audioCache[fileName]); - inputBuffer->open(QIODevice::ReadOnly); - audio->start(inputBuffer); -#else //QT5 - if (!audioData.contains(fileName) || !enabled){ - return; - } - audioData[fileName]->setVolume(settingsCache->getMasterVolume()); - audioData[fileName]->stop(); - audioData[fileName]->setPosition(0); - audioData[fileName]->play(); -#endif + QFileInfo fi(settingsCache->getSoundPath() + "/" + fileName + ".wav"); + qDebug() << "playing" << fi.absoluteFilePath(); + if(!fi.exists()) + return; + + QSound::play(fi.absoluteFilePath()); } void SoundEngine::testSound() { - playSound("player_join"); + playSound(TEST_SOUND_FILENAME); } \ No newline at end of file diff --git a/cockatrice/src/soundengine.h b/cockatrice/src/soundengine.h index 4f55fbeb..3ab2ed8f 100644 --- a/cockatrice/src/soundengine.h +++ b/cockatrice/src/soundengine.h @@ -2,30 +2,12 @@ #define SOUNDENGINE_H #include -#include -#include -#include -#if QT_VERSION > 0x050000 - #include -#endif - -class QAudioOutput; -class QBuffer; class SoundEngine : public QObject { Q_OBJECT private: - QMap audioCache; - QBuffer *inputBuffer; - QAudioOutput *audio; bool enabled; - QStringList fileNames; - - #if QT_VERSION > 0x050000 - QMap audioData; - #endif private slots: - void cacheData(); void soundEnabledChanged(); public: SoundEngine(QObject *parent = 0);