1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-02-02 03:35:09 +01:00

Add new audio objects for loading sounds

This commit is contained in:
Ted John
2022-05-09 18:34:38 +01:00
parent 697fa7c436
commit a2e6691ac2
46 changed files with 1583 additions and 1152 deletions

View File

@@ -1085,33 +1085,36 @@ static void UpdateSound(
volume = volume / 8;
volume = std::max(volume - 0x1FFF, -10000);
if (id != sound.Id && sound.Id != OpenRCT2::Audio::SoundId::Null)
{
sound.Id = OpenRCT2::Audio::SoundId::Null;
Mixer_Stop_Channel(sound.Channel);
}
if (id == OpenRCT2::Audio::SoundId::Null)
{
if (sound.Id != OpenRCT2::Audio::SoundId::Null)
{
sound.Id = OpenRCT2::Audio::SoundId::Null;
Mixer_Stop_Channel(sound.Channel);
}
return;
}
if (sound.Id != OpenRCT2::Audio::SoundId::Null && id != sound.Id)
if (sound.Id == OpenRCT2::Audio::SoundId::Null)
{
Mixer_Stop_Channel(sound.Channel);
}
if ((sound.Id == OpenRCT2::Audio::SoundId::Null) || (id != sound.Id))
{
sound.Id = id;
sound.Pan = sound_params->pan_x;
sound.Volume = volume;
sound.Frequency = sound_params->frequency;
uint16_t frequency = SoundFrequency<type>(id, sound_params->frequency);
uint8_t looping = _soundParams[static_cast<uint8_t>(id)][0];
int32_t pan = sound_params->pan_x;
sound.Channel = Mixer_Play_Effect(
auto frequency = SoundFrequency<type>(id, sound_params->frequency);
auto looping = _soundParams[static_cast<uint8_t>(id)][0];
auto pan = sound_params->pan_x;
auto channel = Mixer_Play_Effect(
id, looping ? MIXER_LOOP_INFINITE : MIXER_LOOP_NONE, DStoMixerVolume(volume), DStoMixerPan(pan),
DStoMixerRate(frequency), 0);
if (channel != nullptr)
{
sound.Id = id;
sound.Pan = sound_params->pan_x;
sound.Volume = volume;
sound.Frequency = sound_params->frequency;
sound.Channel = channel;
}
else
{
sound.Id = OpenRCT2::Audio::SoundId::Null;
}
return;
}
if (volume != sound.Volume)