mirror of
https://github.com/osukey/osukey.git
synced 2025-08-08 00:53:56 +09:00
Calculate best ruleset order only once
This commit is contained in:
@ -32,8 +32,6 @@ namespace osu.Game.Screens.Select
|
|||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
api.Register(this);
|
api.Register(this);
|
||||||
|
|
||||||
ruleset.ValueChanged += _ => bestRulesetOrder = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -90,19 +88,22 @@ namespace osu.Game.Screens.Select
|
|||||||
private IEnumerable<RulesetInfo> getBestRulesetOrder()
|
private IEnumerable<RulesetInfo> getBestRulesetOrder()
|
||||||
{
|
{
|
||||||
if (bestRulesetOrder != null)
|
if (bestRulesetOrder != null)
|
||||||
return bestRulesetOrder;
|
return moveCurrentRulesetToFirst();
|
||||||
|
|
||||||
var otherRulesets = recommendedStarDifficulty.ToList()
|
bestRulesetOrder = recommendedStarDifficulty.ToList()
|
||||||
.Where(pair => !pair.Key.Equals(ruleset.Value))
|
|
||||||
.OrderBy(pair => pair.Value)
|
.OrderBy(pair => pair.Value)
|
||||||
.Select(pair => pair.Key)
|
.Select(pair => pair.Key)
|
||||||
.Reverse();
|
.Reverse();
|
||||||
|
|
||||||
var rulesetList = new List<RulesetInfo>(new[] { ruleset.Value });
|
return moveCurrentRulesetToFirst();
|
||||||
rulesetList.AddRange(otherRulesets);
|
}
|
||||||
|
|
||||||
bestRulesetOrder = rulesetList;
|
private IEnumerable<RulesetInfo> moveCurrentRulesetToFirst()
|
||||||
return rulesetList;
|
{
|
||||||
|
var orderedRulesets = bestRulesetOrder.ToList();
|
||||||
|
orderedRulesets.Remove(ruleset.Value);
|
||||||
|
orderedRulesets.Insert(0, ruleset.Value);
|
||||||
|
return orderedRulesets;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void APIStateChanged(IAPIProvider api, APIState state)
|
public void APIStateChanged(IAPIProvider api, APIState state)
|
||||||
|
Reference in New Issue
Block a user