Fade volume in / out when game window becomes active / inactive

This commit is contained in:
Lucas A 2019-06-17 12:31:23 +02:00
parent b940255972
commit d7d6feb001
1 changed files with 12 additions and 4 deletions

View File

@ -181,7 +181,7 @@ private void load(FrameworkConfigManager frameworkConfig)
configSkin.ValueChanged += skinId => SkinManager.CurrentSkinInfo.Value = SkinManager.Query(s => s.ID == skinId.NewValue) ?? SkinInfo.Default;
configSkin.TriggerChange();
LocalConfig.BindWith(OsuSetting.VolumeInactive, inactiveVolumeAdjust);
LocalConfig.BindWith(OsuSetting.VolumeInactive, inactiveVolume);
IsActive.BindValueChanged(active => updateActiveState(active.NewValue), true);
}
@ -686,14 +686,22 @@ public bool OnPressed(GlobalAction action)
return false;
}
private readonly BindableDouble inactiveVolumeAdjust = new BindableDouble();
private readonly BindableDouble inactiveVolume = new BindableDouble();
private readonly BindableDouble inactiveVolAdjust = new BindableDouble();
private void updateActiveState(bool isActive)
{
if (isActive)
Audio.RemoveAdjustment(AdjustableProperty.Volume, inactiveVolumeAdjust);
{
this.TransformBindableTo(inactiveVolAdjust, 1, 750, Easing.In)
.Finally(_ => Audio.RemoveAdjustment(AdjustableProperty.Volume, inactiveVolAdjust)); //wait for the transition to finish to remove the inactive audio adjustement
}
else
Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolumeAdjust);
{
Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolAdjust);
this.TransformBindableTo(inactiveVolAdjust, inactiveVolume.Value, 750, Easing.Out);
}
}
public bool OnReleased(GlobalAction action) => false;