RetroFE/Source/Sound/Sound.cpp

55 lines
854 B
C++

/* This file is subject to the terms and conditions defined in
* file 'LICENSE.txt', which is part of this source code package.
*/
#include "Sound.h"
#include "../Utility/Log.h"
Sound::Sound(std::string file)
: File(file)
, Chunk(NULL)
{
if(!Allocate())
{
Logger::Write(Logger::ZONE_ERROR, "Sound", "Cannot load " + File);
}
}
Sound::~Sound()
{
if(Chunk)
{
Mix_FreeChunk(Chunk);
Chunk = NULL;
}
}
void Sound::Play()
{
if(Chunk)
{
(void)Mix_PlayChannel(-1, Chunk, 0);
}
}
bool Sound::Free()
{
if(Chunk)
{
Mix_FreeChunk(Chunk);
Chunk = NULL;
}
return true;
}
bool Sound::Allocate()
{
if(!Chunk)
{
Chunk = Mix_LoadWAV(File.c_str());
}
return (Chunk != NULL);
}