added sound engine files
This commit is contained in:
parent
a4097659d3
commit
0c1c0fcb56
2 changed files with 109 additions and 0 deletions
77
cockatrice/src/soundengine.cpp
Normal file
77
cockatrice/src/soundengine.cpp
Normal file
|
@ -0,0 +1,77 @@
|
|||
#include "soundengine.h"
|
||||
#include "settingscache.h"
|
||||
#include <QAudioOutput>
|
||||
#include <QAudioFormat>
|
||||
#include <QFile>
|
||||
#include <QBuffer>
|
||||
|
||||
SoundEngine::SoundEngine(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
inputBuffer = new QBuffer;
|
||||
QAudioFormat format;
|
||||
format.setFrequency(44100);
|
||||
format.setChannels(1);
|
||||
format.setSampleSize(16);
|
||||
format.setCodec("audio/pcm");
|
||||
format.setByteOrder(QAudioFormat::LittleEndian);
|
||||
format.setSampleType(QAudioFormat::SignedInt);
|
||||
audio = new QAudioOutput(format, this);
|
||||
|
||||
connect(settingsCache, SIGNAL(soundPathChanged()), this, SLOT(cacheData()));
|
||||
cacheData();
|
||||
}
|
||||
|
||||
void SoundEngine::cacheData()
|
||||
{
|
||||
static const QStringList fileNames = QStringList()
|
||||
<< "notification" << "draw" << "playcard" << "shuffle" << "tap" << "untap";
|
||||
for (int i = 0; i < fileNames.size(); ++i) {
|
||||
QFile file(settingsCache->getSoundPath() + "/" + fileNames[i] + ".raw");
|
||||
file.open(QIODevice::ReadOnly);
|
||||
audioData.insert(fileNames[i], file.readAll());
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
void SoundEngine::playSound(const QString &fileName)
|
||||
{
|
||||
if (!settingsCache->getSoundEnabled())
|
||||
return;
|
||||
|
||||
audio->stop();
|
||||
inputBuffer->close();
|
||||
inputBuffer->setData(audioData[fileName]);
|
||||
inputBuffer->open(QIODevice::ReadOnly);
|
||||
audio->start(inputBuffer);
|
||||
}
|
||||
|
||||
void SoundEngine::notification()
|
||||
{
|
||||
playSound("notification");
|
||||
}
|
||||
|
||||
void SoundEngine::draw()
|
||||
{
|
||||
playSound("draw");
|
||||
}
|
||||
|
||||
void SoundEngine::playCard()
|
||||
{
|
||||
playSound("playcard");
|
||||
}
|
||||
|
||||
void SoundEngine::shuffle()
|
||||
{
|
||||
playSound("shuffle");
|
||||
}
|
||||
|
||||
void SoundEngine::tap()
|
||||
{
|
||||
playSound("tap");
|
||||
}
|
||||
|
||||
void SoundEngine::untap()
|
||||
{
|
||||
playSound("untap");
|
||||
}
|
32
cockatrice/src/soundengine.h
Normal file
32
cockatrice/src/soundengine.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
#ifndef SOUNDENGINE_H
|
||||
#define SOUNDENGINE_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QMap>
|
||||
|
||||
class QAudioOutput;
|
||||
class QBuffer;
|
||||
|
||||
class SoundEngine : public QObject {
|
||||
Q_OBJECT
|
||||
private:
|
||||
void playSound(const QString &fileName);
|
||||
QMap<QString, QByteArray> audioData;
|
||||
QBuffer *inputBuffer;
|
||||
QAudioOutput *audio;
|
||||
private slots:
|
||||
void cacheData();
|
||||
public:
|
||||
SoundEngine(QObject *parent = 0);
|
||||
public slots:
|
||||
void notification();
|
||||
void draw();
|
||||
void playCard();
|
||||
void shuffle();
|
||||
void tap();
|
||||
void untap();
|
||||
};
|
||||
|
||||
extern SoundEngine *soundEngine;
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue