Remove goto from ride_music_update_final()

This commit is contained in:
Michael Steenbeek 2017-10-18 12:21:17 +02:00
parent 2fd33c4c61
commit 2742bd8db4
1 changed files with 66 additions and 42 deletions

View File

@ -3704,86 +3704,107 @@ rct_ride_music_info* gRideMusicInfoList[NUM_DEFAULT_MUSIC_TRACKS] = {
*/ */
void ride_music_update_final() void ride_music_update_final()
{ {
rct_ride_music_params* edi = NULL; rct_ride_music_params * edi = NULL;
sint32 ebx = 0; sint32 ebx = 0;
if (!(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR)) { if (!(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR))
{
// TODO Allow circus music (CSS24) to play if ride music is disabled (that should be sound) // TODO Allow circus music (CSS24) to play if ride music is disabled (that should be sound)
if (!gGameSoundsOff && gConfigSound.ride_music_enabled && !(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO)) { if (!gGameSoundsOff && gConfigSound.ride_music_enabled && !(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO))
while (1) { {
while (1)
{
sint32 v8 = 0; sint32 v8 = 0;
sint32 v9 = 1; sint32 v9 = 1;
rct_ride_music_params* ride_music_params = &gRideMusicParamsList[0]; rct_ride_music_params * ride_music_params = &gRideMusicParamsList[0];
while (ride_music_params < gRideMusicParamsListEnd) { while (ride_music_params < gRideMusicParamsListEnd)
if (ride_music_params->ride_id != (uint8)-1) { {
if (ride_music_params->ride_id != (uint8) -1)
{
v8++; v8++;
if (v9 >= ride_music_params->volume) { if (v9 >= ride_music_params->volume)
v9 = ride_music_params->volume; {
v9 = ride_music_params->volume;
edi = ride_music_params; edi = ride_music_params;
} }
} }
ride_music_params++; ride_music_params++;
} }
if (v8 <= 2) { if (v8 <= 2)
{
break; break;
} }
edi->ride_id = -1; edi->ride_id = -1;
} }
// stop currently playing music that is not in music params list or not playing? // stop currently playing music that is not in music params list or not playing?
rct_ride_music* ride_music = &gRideMusicList[0]; rct_ride_music * ride_music = &gRideMusicList[0];
sint32 channel = 0; sint32 channel = 0;
do { do
if (ride_music->ride_id != (uint8)-1) { {
rct_ride_music_params* ride_music_params = &gRideMusicParamsList[0]; if (ride_music->ride_id != RIDE_ID_NULL)
while (ride_music_params < gRideMusicParamsListEnd) { {
if (ride_music_params->ride_id == ride_music->ride_id && ride_music_params->tune_id == ride_music->tune_id) { rct_ride_music_params * ride_music_params = &gRideMusicParamsList[0];
sint32 isplaying = Mixer_Channel_IsPlaying(gRideMusicList[channel].sound_channel); sint32 isplaying = 0;
if (isplaying) { while (ride_music_params < gRideMusicParamsListEnd && !isplaying)
goto label32; {
} if (ride_music_params->ride_id == ride_music->ride_id && ride_music_params->tune_id == ride_music->tune_id)
{
isplaying = Mixer_Channel_IsPlaying(gRideMusicList[channel].sound_channel);
break; break;
} }
ride_music_params++; ride_music_params++;
} }
Mixer_Stop_Channel(gRideMusicList[channel].sound_channel); if (!isplaying)
ride_music->ride_id = -1; {
Mixer_Stop_Channel(gRideMusicList[channel].sound_channel);
ride_music->ride_id = RIDE_ID_NULL;
}
} }
label32:
ride_music++; ride_music++;
channel++; channel++;
} while(channel < AUDIO_MAX_RIDE_MUSIC); }
while (channel < AUDIO_MAX_RIDE_MUSIC);
for (rct_ride_music_params* ride_music_params = &gRideMusicParamsList[0]; ride_music_params < gRideMusicParamsListEnd; ride_music_params++) { for (rct_ride_music_params * ride_music_params = &gRideMusicParamsList[0]; ride_music_params < gRideMusicParamsListEnd; ride_music_params++)
if (ride_music_params->ride_id != (uint8)-1) { {
rct_ride_music* ride_music_2 = &gRideMusicList[0]; if (ride_music_params->ride_id != RIDE_ID_NULL)
{
rct_ride_music * ride_music_2 = &gRideMusicList[0];
sint32 channel2 = 0; sint32 channel2 = 0;
while (ride_music_params->ride_id != ride_music_2->ride_id || ride_music_params->tune_id != ride_music_2->tune_id) { while (ride_music_params->ride_id != ride_music_2->ride_id || ride_music_params->tune_id != ride_music_2->tune_id)
if (ride_music_2->ride_id == (uint8)-1) { {
if (ride_music_2->ride_id == RIDE_ID_NULL)
{
ebx = channel2; ebx = channel2;
} }
ride_music_2++; ride_music_2++;
channel2++; channel2++;
if (channel2 >= AUDIO_MAX_RIDE_MUSIC) { if (channel2 >= AUDIO_MAX_RIDE_MUSIC)
rct_ride_music_info* ride_music_info = gRideMusicInfoList[ride_music_params->tune_id]; {
rct_ride_music* ride_music_3 = &gRideMusicList[ebx]; rct_ride_music_info * ride_music_info = gRideMusicInfoList[ride_music_params->tune_id];
rct_ride_music * ride_music_3 = &gRideMusicList[ebx];
ride_music_3->sound_channel = Mixer_Play_Music(ride_music_info->path_id, MIXER_LOOP_NONE, true); ride_music_3->sound_channel = Mixer_Play_Music(ride_music_info->path_id, MIXER_LOOP_NONE, true);
if (ride_music_3->sound_channel) { if (ride_music_3->sound_channel)
ride_music_3->volume = ride_music_params->volume; {
ride_music_3->pan = ride_music_params->pan; ride_music_3->volume = ride_music_params->volume;
ride_music_3->pan = ride_music_params->pan;
ride_music_3->frequency = ride_music_params->frequency; ride_music_3->frequency = ride_music_params->frequency;
ride_music_3->ride_id = ride_music_params->ride_id; ride_music_3->ride_id = ride_music_params->ride_id;
ride_music_3->tune_id = ride_music_params->tune_id; ride_music_3->tune_id = ride_music_params->tune_id;
Mixer_Channel_Volume(ride_music_3->sound_channel, DStoMixerVolume(ride_music_3->volume)); Mixer_Channel_Volume(ride_music_3->sound_channel, DStoMixerVolume(ride_music_3->volume));
Mixer_Channel_Pan(ride_music_3->sound_channel, DStoMixerPan(ride_music_3->pan)); Mixer_Channel_Pan(ride_music_3->sound_channel, DStoMixerPan(ride_music_3->pan));
Mixer_Channel_Rate(ride_music_3->sound_channel, DStoMixerRate(ride_music_3->frequency)); Mixer_Channel_Rate(ride_music_3->sound_channel, DStoMixerRate(ride_music_3->frequency));
sint32 offset = ride_music_params->offset - 10000; sint32 offset = ride_music_params->offset - 10000;
if (offset < 0) { if (offset < 0)
{
offset = 0; offset = 0;
} }
Mixer_Channel_SetOffset(ride_music_3->sound_channel, offset); Mixer_Channel_SetOffset(ride_music_3->sound_channel, offset);
// Move circus music to the sound mixer group // Move circus music to the sound mixer group
if (ride_music_info->path_id == PATH_ID_CSS24) { if (ride_music_info->path_id == PATH_ID_CSS24)
{
Mixer_Channel_SetGroup(ride_music_3->sound_channel, MIXER_GROUP_SOUND); Mixer_Channel_SetGroup(ride_music_3->sound_channel, MIXER_GROUP_SOUND);
} }
} }
@ -3791,15 +3812,18 @@ void ride_music_update_final()
} }
} }
if (ride_music_params->volume != ride_music_2->volume) { if (ride_music_params->volume != ride_music_2->volume)
{
ride_music_2->volume = ride_music_params->volume; ride_music_2->volume = ride_music_params->volume;
Mixer_Channel_Volume(ride_music_2->sound_channel, DStoMixerVolume(ride_music_2->volume)); Mixer_Channel_Volume(ride_music_2->sound_channel, DStoMixerVolume(ride_music_2->volume));
} }
if (ride_music_params->pan != ride_music_2->pan) { if (ride_music_params->pan != ride_music_2->pan)
{
ride_music_2->pan = ride_music_params->pan; ride_music_2->pan = ride_music_params->pan;
Mixer_Channel_Pan(ride_music_2->sound_channel, DStoMixerPan(ride_music_2->pan)); Mixer_Channel_Pan(ride_music_2->sound_channel, DStoMixerPan(ride_music_2->pan));
} }
if (ride_music_params->frequency != ride_music_2->frequency) { if (ride_music_params->frequency != ride_music_2->frequency)
{
ride_music_2->frequency = ride_music_params->frequency; ride_music_2->frequency = ride_music_params->frequency;
Mixer_Channel_Rate(ride_music_2->sound_channel, DStoMixerRate(ride_music_2->frequency)); Mixer_Channel_Rate(ride_music_2->sound_channel, DStoMixerRate(ride_music_2->frequency));
} }