diff --git a/src/newgrf_sound.cpp b/src/newgrf_sound.cpp index 523b210d1c..dbd6f60c69 100644 --- a/src/newgrf_sound.cpp +++ b/src/newgrf_sound.cpp @@ -185,7 +185,7 @@ SoundID GetNewGRFSoundID(const GRFFile *file, SoundID sound_id) */ bool PlayVehicleSound(const Vehicle *v, VehicleSoundEvent event) { - if (!_settings_client.sound.vehicle) return true; + if (!_settings_client.sound.vehicle || _settings_client.music.effect_vol == 0) return true; const GRFFile *file = v->GetGRF(); uint16 callback; diff --git a/src/sound.cpp b/src/sound.cpp index 4b73e16a50..965423dad4 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -256,8 +256,6 @@ void SndCopyToPool() */ static void SndPlayScreenCoordFx(SoundID sound, int left, int right, int top, int bottom) { - if (_settings_client.music.effect_vol == 0) return; - for (const Window *w : Window::IterateFromBack()) { const Viewport *vp = w->viewport; @@ -280,6 +278,8 @@ static void SndPlayScreenCoordFx(SoundID sound, int left, int right, int top, in void SndPlayTileFx(SoundID sound, TileIndex tile) { + if (_settings_client.music.effect_vol == 0) return; + /* emits sound from center of the tile */ int x = std::min(MapMaxX() - 1, TileX(tile)) * TILE_SIZE + TILE_SIZE / 2; int y = std::min(MapMaxY() - 1, TileY(tile)) * TILE_SIZE - TILE_SIZE / 2; @@ -292,6 +292,8 @@ void SndPlayTileFx(SoundID sound, TileIndex tile) void SndPlayVehicleFx(SoundID sound, const Vehicle *v) { + if (_settings_client.music.effect_vol == 0) return; + SndPlayScreenCoordFx(sound, v->coord.left, v->coord.right, v->coord.top, v->coord.bottom diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 3c0376c354..c1991d7b6c 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1442,7 +1442,7 @@ void VehicleTickMotion(Vehicle *v, Vehicle *front) if (v->vehstatus & VS_HIDDEN) return; v->motion_counter += front->cur_speed; - if (_settings_client.sound.vehicle) { + if (_settings_client.sound.vehicle && _settings_client.music.effect_vol != 0) { /* Play a running sound if the motion counter passes 256 (Do we not skip sounds?) */ if (GB(v->motion_counter, 0, 8) < front->cur_speed) PlayVehicleSound(v, VSE_RUNNING);