mirror of
https://github.com/ppy/osu.git
synced 2025-01-13 16:32:54 +08:00
Fix externally changed settings from being reset when ModSelectOverlay is initialised
This commit is contained in:
parent
75bc9f607e
commit
a39263423c
@ -46,8 +46,9 @@ namespace osu.Game.Overlays.Mods
|
|||||||
/// Change the selected mod index of this button.
|
/// Change the selected mod index of this button.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="newIndex">The new index.</param>
|
/// <param name="newIndex">The new index.</param>
|
||||||
|
/// <param name="resetSettings">Whether any settings applied to the mod should be reset on selection.</param>
|
||||||
/// <returns>Whether the selection changed.</returns>
|
/// <returns>Whether the selection changed.</returns>
|
||||||
private bool changeSelectedIndex(int newIndex)
|
private bool changeSelectedIndex(int newIndex, bool resetSettings = true)
|
||||||
{
|
{
|
||||||
if (newIndex == selectedIndex) return false;
|
if (newIndex == selectedIndex) return false;
|
||||||
|
|
||||||
@ -69,7 +70,8 @@ namespace osu.Game.Overlays.Mods
|
|||||||
|
|
||||||
Mod newSelection = SelectedMod ?? Mods[0];
|
Mod newSelection = SelectedMod ?? Mods[0];
|
||||||
|
|
||||||
newSelection.ResetSettingsToDefaults();
|
if (resetSettings)
|
||||||
|
newSelection.ResetSettingsToDefaults();
|
||||||
|
|
||||||
Schedule(() =>
|
Schedule(() =>
|
||||||
{
|
{
|
||||||
@ -211,11 +213,17 @@ namespace osu.Game.Overlays.Mods
|
|||||||
Deselect();
|
Deselect();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SelectAt(int index)
|
/// <summary>
|
||||||
|
/// Select the mod at the provided index.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="index">The index to select.</param>
|
||||||
|
/// <param name="resetSettings">Whether any settings applied to the mod should be reset on selection.</param>
|
||||||
|
/// <returns>Whether the selection changed.</returns>
|
||||||
|
public bool SelectAt(int index, bool resetSettings = true)
|
||||||
{
|
{
|
||||||
if (!Mods[index].HasImplementation) return false;
|
if (!Mods[index].HasImplementation) return false;
|
||||||
|
|
||||||
changeSelectedIndex(index);
|
changeSelectedIndex(index, resetSettings);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,9 +197,10 @@ namespace osu.Game.Overlays.Mods
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
var buttonMod = button.Mods[index];
|
var buttonMod = button.Mods[index];
|
||||||
button.SelectAt(index);
|
|
||||||
|
|
||||||
// the selection above will reset settings to defaults, but as this is an external change we want to copy the new settings across.
|
button.SelectAt(index, false);
|
||||||
|
|
||||||
|
// as this is likely coming from an external change, ensure the settings of the mod are in sync.
|
||||||
buttonMod.CopyFrom(mod);
|
buttonMod.CopyFrom(mod);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user