mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-07-01 22:25:17 +02:00
bgm_play, bgm_stop and bgm_fade should default to stopping/fading all channels when no channel is specified
This commit is contained in:
parent
6e9e8a4075
commit
5d39805aeb
3 changed files with 42 additions and 13 deletions
|
@ -92,7 +92,7 @@ RB_METHOD(audio_bgmPlay)
|
|||
int volume = 100;
|
||||
int pitch = 100;
|
||||
double pos = 0.0;
|
||||
int channel = 0;
|
||||
int channel = -127;
|
||||
rb_get_args(argc, argv, "z|iifi", &filename, &volume, &pitch, &pos, &channel RB_ARG_END);
|
||||
GUARD_EXC( shState->audio().bgmPlay(filename, volume, pitch, pos, channel); )
|
||||
return Qnil;
|
||||
|
@ -101,7 +101,9 @@ RB_METHOD(audio_bgmPlay)
|
|||
RB_METHOD(audio_bgmStop)
|
||||
{
|
||||
RB_UNUSED_PARAM;
|
||||
shState->audio().bgmStop();
|
||||
int channel = -127;
|
||||
rb_get_args(argc, argv, "|i", &channel RB_ARG_END);
|
||||
shState->audio().bgmStop(channel);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
@ -135,7 +137,17 @@ DEF_PLAY_STOP_POS( bgs )
|
|||
|
||||
DEF_PLAY_STOP( me )
|
||||
|
||||
DEF_FADE( bgm )
|
||||
//DEF_FADE( bgm )
|
||||
RB_METHOD(audio_bgmFade)
|
||||
{
|
||||
RB_UNUSED_PARAM;
|
||||
int time;
|
||||
int channel = -127;
|
||||
rb_get_args(argc, argv, "i|i", &time, &channel RB_ARG_END);
|
||||
shState->audio().bgmFade(time, channel);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
DEF_FADE( bgs )
|
||||
DEF_FADE( me )
|
||||
|
||||
|
|
|
@ -283,20 +283,37 @@ void Audio::bgmPlay(const char *filename,
|
|||
float pos,
|
||||
int channel)
|
||||
{
|
||||
// todo: error if the channel is out of range
|
||||
if (channel == -127) {
|
||||
for (auto chan : p->bgmChannels)
|
||||
chan->stop();
|
||||
|
||||
channel = 0;
|
||||
}
|
||||
p->bgmChannels[clamp(channel, 0, (int)p->bgmChannels.size() - 1)]->play(filename, volume, pitch, pos);
|
||||
}
|
||||
|
||||
void Audio::bgmStop()
|
||||
void Audio::bgmStop(int channel)
|
||||
{
|
||||
for (auto chan : p->bgmChannels)
|
||||
chan->stop();
|
||||
if (channel == -127) {
|
||||
for (auto chan : p->bgmChannels)
|
||||
chan->stop();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
p->bgmChannels[clamp(channel, 0, (int)p->bgmChannels.size() - 1)]->stop();
|
||||
}
|
||||
|
||||
void Audio::bgmFade(int time)
|
||||
void Audio::bgmFade(int time, int channel)
|
||||
{
|
||||
for (auto chan : p->bgmChannels)
|
||||
chan->fadeOut(time);
|
||||
if (channel == -127) {
|
||||
for (auto chan : p->bgmChannels)
|
||||
chan->fadeOut(time);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
p->bgmChannels[clamp(channel, 0, (int)p->bgmChannels.size() - 1)]->fadeOut(time);
|
||||
}
|
||||
|
||||
int Audio::bgmGetVolume(int channel)
|
||||
|
|
|
@ -42,9 +42,9 @@ public:
|
|||
int volume = 100,
|
||||
int pitch = 100,
|
||||
float pos = 0,
|
||||
int channel = 0);
|
||||
void bgmStop();
|
||||
void bgmFade(int time);
|
||||
int channel = -127);
|
||||
void bgmStop(int channel = -127);
|
||||
void bgmFade(int time, int channel = -127);
|
||||
int bgmGetVolume(int channel = -127);
|
||||
void bgmSetVolume(int volume = 100, int channel = -127);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue