1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-12 17:23:22 +08:00

Round off inaccuracies in the aggregate volume before evaluating

This commit is contained in:
Mike Will 2024-02-02 02:41:58 -05:00
parent 3122211268
commit f4a2d5f3f4

View File

@ -551,7 +551,8 @@ namespace osu.Game.Screens.Play
if (!muteWarningShownOnce.Value)
{
// Checks if the notification has not been shown yet and also if master volume is muted, track/music volume is muted or if the whole game is muted.
if (volumeOverlay?.IsMuted.Value == true || audioManager.Volume.Value * audioManager.VolumeTrack.Value <= volume_requirement)
double aggregate = Math.Floor(audioManager.Volume.Value * audioManager.VolumeTrack.Value * 100) / 100;
if (volumeOverlay?.IsMuted.Value == true || aggregate <= volume_requirement)
{
notificationOverlay?.Post(new MutedNotification());
muteWarningShownOnce.Value = true;
@ -582,7 +583,8 @@ namespace osu.Game.Screens.Play
// Check values before resetting, as the user may have only had mute enabled, in which case we might not need to adjust volumes.
// Note that we only restore to -20 dB to ensure the user isn't suddenly overloaded by unexpectedly high volume.
if (audioManager.Volume.Value * audioManager.VolumeTrack.Value <= volume_requirement)
double aggregate = Math.Floor(audioManager.Volume.Value * audioManager.VolumeTrack.Value * 100) / 100;
if (aggregate <= volume_requirement)
{
// Prioritize increasing music over master volume as to avoid also increasing effects volume.
const double target = 0.1;