1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 06:47:24 +08:00

Fix mod overlay and footer not updating multiplayer on settings change

This commit is contained in:
Salman Ahmed 2022-07-18 07:38:56 +03:00
parent 32ba58109b
commit eddae7b143
2 changed files with 21 additions and 1 deletions

View File

@ -222,6 +222,8 @@ namespace osu.Game.Overlays.Mods
globalAvailableMods.BindTo(game.AvailableMods);
}
private ModSettingChangeTracker? modSettingChangeTracker;
protected override void LoadComplete()
{
// this is called before base call so that the mod state is populated early, and the transition in `PopIn()` can play out properly.
@ -238,9 +240,14 @@ namespace osu.Game.Overlays.Mods
SelectedMods.BindValueChanged(val =>
{
modSettingChangeTracker?.Dispose();
updateMultiplier();
updateCustomisation(val);
updateFromExternalSelection();
modSettingChangeTracker = new ModSettingChangeTracker(val.NewValue);
modSettingChangeTracker.SettingChanged += _ => updateMultiplier();
}, true);
customisationVisible.BindValueChanged(_ => updateCustomisationVisualState(), true);

View File

@ -9,9 +9,11 @@ using osu.Game.Screens.Play.HUD;
using osu.Game.Rulesets.Mods;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using osu.Framework.Allocation;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics.UserInterface;
using osu.Game.Configuration;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osuTK;
@ -61,11 +63,22 @@ namespace osu.Game.Screens.Select
Hotkey = GlobalAction.ToggleModSelection;
}
[CanBeNull]
private ModSettingChangeTracker modSettingChangeTracker;
protected override void LoadComplete()
{
base.LoadComplete();
Current.BindValueChanged(_ => updateMultiplierText(), true);
Current.BindValueChanged(mods =>
{
modSettingChangeTracker?.Dispose();
updateMultiplierText();
modSettingChangeTracker = new ModSettingChangeTracker(mods.NewValue);
modSettingChangeTracker.SettingChanged += _ => updateMultiplierText();
}, true);
}
private void updateMultiplierText() => Schedule(() =>