mirror of
https://github.com/osukey/osukey.git
synced 2025-05-12 09:07:28 +09:00
Disable/disallow freemods on incompatible/selected mods
This commit is contained in:
parent
4fee762a4f
commit
2dece12a7c
@ -130,13 +130,13 @@ namespace osu.Game.Overlays.Mods
|
||||
/// Updates all buttons with the given list of selected mods.
|
||||
/// </summary>
|
||||
/// <param name="newSelectedMods">The new list of selected mods to select.</param>
|
||||
public void UpdateSelectedMods(IReadOnlyList<Mod> newSelectedMods)
|
||||
public void UpdateSelectedButtons(IReadOnlyList<Mod> newSelectedMods)
|
||||
{
|
||||
foreach (var button in buttons)
|
||||
updateButtonMods(button, newSelectedMods);
|
||||
updateButtonSelection(button, newSelectedMods);
|
||||
}
|
||||
|
||||
private void updateButtonMods(ModButton button, IReadOnlyList<Mod> newSelectedMods)
|
||||
private void updateButtonSelection(ModButton button, IReadOnlyList<Mod> newSelectedMods)
|
||||
{
|
||||
foreach (var mod in newSelectedMods)
|
||||
{
|
||||
|
@ -377,7 +377,7 @@ namespace osu.Game.Overlays.Mods
|
||||
base.LoadComplete();
|
||||
|
||||
availableMods.BindValueChanged(_ => updateAvailableMods(), true);
|
||||
SelectedMods.BindValueChanged(selectedModsChanged, true);
|
||||
SelectedMods.BindValueChanged(_ => updateSelectedButtons(), true);
|
||||
}
|
||||
|
||||
protected override void PopOut()
|
||||
@ -445,6 +445,8 @@ namespace osu.Game.Overlays.Mods
|
||||
|
||||
section.Mods = modEnumeration.Select(validModOrNull).Where(m => m != null);
|
||||
}
|
||||
|
||||
updateSelectedButtons();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -465,10 +467,13 @@ namespace osu.Game.Overlays.Mods
|
||||
return validSubset.Length == 0 ? null : new MultiMod(validSubset);
|
||||
}
|
||||
|
||||
private void selectedModsChanged(ValueChangedEvent<IReadOnlyList<Mod>> mods)
|
||||
private void updateSelectedButtons()
|
||||
{
|
||||
// Enumeration below may update the bindable list.
|
||||
var selectedMods = SelectedMods.Value.ToList();
|
||||
|
||||
foreach (var section in ModSectionsContainer.Children)
|
||||
section.UpdateSelectedMods(mods.NewValue);
|
||||
section.UpdateSelectedButtons(selectedMods);
|
||||
|
||||
updateMods();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user