38 lines
684 B
C++
38 lines
684 B
C++
#include "Audio.h"
|
|
#include "../util/Files.h"
|
|
|
|
#include "AudioPlayer.h"
|
|
|
|
Audio::Audio() {
|
|
}
|
|
|
|
Audio::Audio(const char *path) {
|
|
loadFromFile(path);
|
|
}
|
|
|
|
Audio::~Audio() {
|
|
unload();
|
|
}
|
|
|
|
bool Audio::isValid() const {
|
|
return _data != nullptr;
|
|
}
|
|
|
|
void Audio::loadFromFile(const char *path) {
|
|
unload();
|
|
void *pb = nullptr;
|
|
_length = Files::allocateBufferAndLoadFromFile(path, &pb);
|
|
_data = static_cast<decltype(_data)>(pb);
|
|
}
|
|
|
|
void Audio::unload() {
|
|
if (_data) {
|
|
if (audioPlayer.isPlaying(*this)) {
|
|
audioPlayer.stopAudio(*this);
|
|
}
|
|
Files::deleteBuffer(_data);
|
|
_length = 0;
|
|
}
|
|
}
|
|
|