mirror of
https://github.com/osukey/osukey.git
synced 2025-08-07 00:23:59 +09:00
Update rankings overlay ruleset bindable with parent on initial display
This commit is contained in:
@ -15,7 +15,6 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
public class RankingsOverlay : TabbableOnlineOverlay<RankingsOverlayHeader, RankingsScope>
|
public class RankingsOverlay : TabbableOnlineOverlay<RankingsOverlayHeader, RankingsScope>
|
||||||
{
|
{
|
||||||
protected Bindable<RulesetInfo> Ruleset => Header.Ruleset;
|
|
||||||
protected Bindable<Country> Country => Header.Country;
|
protected Bindable<Country> Country => Header.Country;
|
||||||
|
|
||||||
private APIRequest lastRequest;
|
private APIRequest lastRequest;
|
||||||
@ -23,6 +22,12 @@ namespace osu.Game.Overlays
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private IAPIProvider api { get; set; }
|
private IAPIProvider api { get; set; }
|
||||||
|
|
||||||
|
[Resolved]
|
||||||
|
private IBindable<RulesetInfo> parentRuleset { get; set; }
|
||||||
|
|
||||||
|
[Cached]
|
||||||
|
private readonly Bindable<RulesetInfo> ruleset = new Bindable<RulesetInfo>();
|
||||||
|
|
||||||
public RankingsOverlay()
|
public RankingsOverlay()
|
||||||
: base(OverlayColourScheme.Green)
|
: base(OverlayColourScheme.Green)
|
||||||
{
|
{
|
||||||
@ -32,6 +37,8 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
|
Header.Ruleset.BindTo(ruleset);
|
||||||
|
|
||||||
Country.BindValueChanged(_ =>
|
Country.BindValueChanged(_ =>
|
||||||
{
|
{
|
||||||
// if a country is requested, force performance scope.
|
// if a country is requested, force performance scope.
|
||||||
@ -41,7 +48,7 @@ namespace osu.Game.Overlays
|
|||||||
Scheduler.AddOnce(triggerTabChanged);
|
Scheduler.AddOnce(triggerTabChanged);
|
||||||
});
|
});
|
||||||
|
|
||||||
Ruleset.BindValueChanged(_ =>
|
ruleset.BindValueChanged(_ =>
|
||||||
{
|
{
|
||||||
if (Header.Current.Value == RankingsScope.Spotlights)
|
if (Header.Current.Value == RankingsScope.Spotlights)
|
||||||
return;
|
return;
|
||||||
@ -50,6 +57,19 @@ namespace osu.Game.Overlays
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool requiresRulesetUpdate = true;
|
||||||
|
|
||||||
|
protected override void PopIn()
|
||||||
|
{
|
||||||
|
if (requiresRulesetUpdate)
|
||||||
|
{
|
||||||
|
ruleset.Value = parentRuleset.Value;
|
||||||
|
requiresRulesetUpdate = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
base.PopIn();
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnTabChanged(RankingsScope tab)
|
protected override void OnTabChanged(RankingsScope tab)
|
||||||
{
|
{
|
||||||
// country filtering is only valid for performance scope.
|
// country filtering is only valid for performance scope.
|
||||||
@ -81,7 +101,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
LoadDisplay(new SpotlightsLayout
|
LoadDisplay(new SpotlightsLayout
|
||||||
{
|
{
|
||||||
Ruleset = { BindTarget = Ruleset }
|
Ruleset = { BindTarget = ruleset }
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -106,13 +126,13 @@ namespace osu.Game.Overlays
|
|||||||
switch (Header.Current.Value)
|
switch (Header.Current.Value)
|
||||||
{
|
{
|
||||||
case RankingsScope.Performance:
|
case RankingsScope.Performance:
|
||||||
return new GetUserRankingsRequest(Ruleset.Value, country: Country.Value?.FlagName);
|
return new GetUserRankingsRequest(ruleset.Value, country: Country.Value?.FlagName);
|
||||||
|
|
||||||
case RankingsScope.Country:
|
case RankingsScope.Country:
|
||||||
return new GetCountryRankingsRequest(Ruleset.Value);
|
return new GetCountryRankingsRequest(ruleset.Value);
|
||||||
|
|
||||||
case RankingsScope.Score:
|
case RankingsScope.Score:
|
||||||
return new GetUserRankingsRequest(Ruleset.Value, UserRankingsType.Score);
|
return new GetUserRankingsRequest(ruleset.Value, UserRankingsType.Score);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
Reference in New Issue
Block a user