/********************************************************
再生
引数 _channel = チャンネル番号
_data = サウンドデータ
_size = サウンドデータサイズ
_loop = ループ回数(0:無限ループ)
_vol = 音量
*******************************************************/
void SoundManager::prepare(int _channel, const void* _data, u32 _size, int _loop, float _vol)
{
assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX));
player[_channel].prepare(_data, _size, _loop, _vol);
}
void SoundManager::play(int _channel)
{
assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX));
player[_channel].play();
}
void SoundManager::play(int _channel, const void* _data, u32 _size, int _loop, float _vol)
{
assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX));
player[_channel].prepare(_data, _size, _loop, _vol);
player[_channel].play();
}
void SoundManager::play(void)
{
for (int i = 0; i < SOUND_CHANNEL_MAX; i++) { // 全て再生開始
player[i].play();
}
}
/*******************************************
停止
引数 _channel = チャンネル番号
*******************************************/
void SoundManager::stop(int _channel)
{
assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX));
player[_channel].stop();
}
void SoundManager::stop(void)
{
for (int i = 0; i < SOUND_CHANNEL_MAX; i++) { // 全て停止
player[i].stop();
}
}
/*********************************************************
音量設定
引数 _channel = チャンネル番号
_vol = 音量(0.0:最小 ~ 1.0:最大)
*********************************************************/
void SoundManager::set_volume(int _channel, float _vol)
{
assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX));
player[_channel].set_volume(_vol);
}
/*****************************************************
マスター音量設定
引数 _vol = 音量(0.0:最小 ~ 1.0:最大)
*****************************************************/
void SoundManager::set_master_volume(float _vol)
{
if ( SoundPlayer::set_master_volume(_vol) ) {
for (int i = 0; i < SOUND_CHANNEL_MAX; i++) {
player[i].set_volume(); // 音量再設定
}
}
}
/*******************************************************
連続再生設定
引数 _channel = チャンネル番号
_data = サウンドデータ
_size = サウンドデータサイズ
_loop = ループ回数(0:無限ループ)
*******************************************************/
void SoundManager::set_next(int _channel, const void* _data, u32 _size, int _loop)
{
assert((0 <= _channel) && (_channel < SOUND_CHANNEL_MAX));
player[_channel].set_next(_data, _size, _loop);
}
再生等の処理です。
指定されたチャンネルのプレイヤーの処理を呼んでます。
停止等の処理でチャンネルを指定しない場合は、すべてのチャンネルのプレイヤーで処理を行うようになっています。
マスター音量設定時の各プレイヤーの音量の再設定はここで行いますので、アプリ側で行う必要はなくなりました。
/*********************************************
一時停止
引数 _f = 状態フラグを変更するか
*********************************************/
void SoundPlayer::pause(Bool _f)
{
if ( state == PLAYING ) { // 再生中
if ( bqPlayerObject ) {
(*bqPlayerPlay)->SetPlayState(bqPlayerPlay, SL_PLAYSTATE_PAUSED); // 一時停止状態
}
if ( _f ) {
state = PAUSED;
}
}
}
コメントをする