SpaceCadetPinball/SpaceCadetPinball/Sound.cpp

61 lines
1.0 KiB
C++
Raw Normal View History

2020-11-06 14:56:32 +01:00
#include "pch.h"
#include "Sound.h"
2021-01-23 17:28:29 +01:00
int Sound::num_channels;
unsigned int Sound::enabled_flag = -1;
2021-01-23 17:28:29 +01:00
int Sound::Init(int voices)
2020-12-02 18:12:34 +01:00
{
2021-01-23 17:28:29 +01:00
int channelCount = voices;
if (voices > 8)
channelCount = 8;
num_channels = channelCount;
Mix_Init(MIX_INIT_MID);
return Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 1024);
2020-12-02 18:12:34 +01:00
}
2021-01-23 17:28:29 +01:00
void Sound::Enable(int channelFrom, int channelTo, int enableFlag)
2020-11-06 14:56:32 +01:00
{
enabled_flag = enableFlag ? -1 : 0;
}
2020-12-02 18:12:34 +01:00
void Sound::Activate()
{
Mix_Resume(-1);
2020-12-02 18:12:34 +01:00
}
void Sound::Deactivate()
{
Mix_Pause(-1);
2020-12-02 18:12:34 +01:00
}
void Sound::Close()
{
Mix_CloseAudio();
Mix_Quit();
2021-01-23 17:28:29 +01:00
}
void Sound::PlaySound(Mix_Chunk* wavePtr, int minChannel, int maxChannel, unsigned int dwFlags, int16_t loops)
2021-01-23 17:28:29 +01:00
{
if (wavePtr && enabled_flag)
Mix_PlayChannel(-1, wavePtr, loops);
2020-12-25 14:46:06 +01:00
}
Mix_Chunk* Sound::LoadWaveFile(std::string lpName)
2020-12-25 14:46:06 +01:00
{
auto wavFile = fopen(lpName.c_str(), "r");
if (!wavFile)
return nullptr;
fclose(wavFile);
return Mix_LoadWAV(lpName.c_str());
2020-12-25 14:46:06 +01:00
}
void Sound::FreeSound(Mix_Chunk* wave)
2020-12-25 14:46:06 +01:00
{
if (wave)
Mix_FreeChunk(wave);
2020-12-25 14:46:06 +01:00
}