This commit is contained in:
2024-02-27 10:10:02 +01:00
parent c0aea669c7
commit 547809c898
131 changed files with 65609 additions and 0 deletions

77
Engine/SoundEffect.cpp Normal file
View File

@@ -0,0 +1,77 @@
#include "base.h"
#include <iostream>
#include "SoundEffect.h"
SoundEffect::SoundEffect( const std::string& path )
:m_pMixChunk{ Mix_LoadWAV( path.c_str( ) ) }
{
if ( m_pMixChunk == nullptr )
{
const std::string errorMsg = "SoundEffect: Failed to load " + path + ",\nSDL_mixer Error: " + Mix_GetError( );
std::cerr << errorMsg;
}
}
SoundEffect::~SoundEffect( )
{
Mix_FreeChunk( m_pMixChunk );
m_pMixChunk = nullptr;
}
bool SoundEffect::IsLoaded( ) const
{
return m_pMixChunk != nullptr;
}
bool SoundEffect::Play( const int loops ) const
{
// Don't save the channel as a data member,
// because when it stops playing the channel becomes free
// and available for usage by other effects
if ( m_pMixChunk != nullptr )
{
const int channel{ Mix_PlayChannel( -1, m_pMixChunk, loops ) };
return channel == -1 ? false : true;
}
else
{
return false;
}
}
void SoundEffect::SetVolume( const int value )
{
if ( m_pMixChunk != nullptr )
{
Mix_VolumeChunk( m_pMixChunk, value );
}
}
int SoundEffect::GetVolume( ) const
{
if ( m_pMixChunk != nullptr )
{
return Mix_VolumeChunk( m_pMixChunk, -1 );
}
else
{
return -1;
}
}
void SoundEffect::StopAll( )
{
Mix_HaltChannel(-1 );
}
void SoundEffect::PauseAll( )
{
Mix_Pause( -1 );
}
void SoundEffect::ResumeAll( )
{
Mix_Resume( -1 );
}