Move config setting logic to background loader

This commit is contained in:
Bartłomiej Dach 2020-10-30 20:32:14 +01:00
parent cf0e8e0a62
commit 67a325f47d
2 changed files with 18 additions and 13 deletions

View File

@ -18,12 +18,14 @@ namespace osu.Game.Graphics.Backgrounds
[LongRunningLoad]
public class SeasonalBackgroundLoader : Component
{
private Bindable<SeasonalBackgroundMode> seasonalBackgroundMode;
private Bindable<APISeasonalBackgrounds> seasonalBackgrounds;
private int current;
[BackgroundDependencyLoader]
private void load(SessionStatics sessionStatics, IAPIProvider api)
private void load(OsuConfigManager config, SessionStatics sessionStatics, IAPIProvider api)
{
seasonalBackgroundMode = config.GetBindable<SeasonalBackgroundMode>(OsuSetting.SeasonalBackgroundMode);
seasonalBackgrounds = sessionStatics.GetBindable<APISeasonalBackgrounds>(Static.SeasonalBackgrounds);
if (seasonalBackgrounds.Value != null) return;
@ -38,10 +40,17 @@ private void load(SessionStatics sessionStatics, IAPIProvider api)
api.PerformAsync(request);
}
public SeasonalBackground LoadBackground()
public SeasonalBackground LoadNextBackground()
{
if (seasonalBackgroundMode.Value == SeasonalBackgroundMode.Never
|| (seasonalBackgroundMode.Value == SeasonalBackgroundMode.Sometimes && !isInSeason))
{
return null;
}
var backgrounds = seasonalBackgrounds.Value.Backgrounds;
if (backgrounds == null || !backgrounds.Any()) return null;
if (backgrounds == null || !backgrounds.Any())
return null;
current = (current + 1) % backgrounds.Count;
string url = backgrounds[current].Url;
@ -49,7 +58,7 @@ public SeasonalBackground LoadBackground()
return new SeasonalBackground(url);
}
public bool IsInSeason => seasonalBackgrounds.Value != null && DateTimeOffset.Now < seasonalBackgrounds.Value.EndDate;
private bool isInSeason => seasonalBackgrounds.Value != null && DateTimeOffset.Now < seasonalBackgrounds.Value.EndDate;
}
[LongRunningLoad]

View File

@ -79,17 +79,13 @@ private Background createBackground()
Background newBackground;
string backgroundName;
if (seasonalBackgroundMode.Value == SeasonalBackgroundMode.Always
|| (seasonalBackgroundMode.Value == SeasonalBackgroundMode.Sometimes && seasonalBackgroundLoader.IsInSeason))
{
var seasonalBackground = seasonalBackgroundLoader.LoadBackground();
var seasonalBackground = seasonalBackgroundLoader.LoadNextBackground();
if (seasonalBackground != null)
{
seasonalBackground.Depth = currentDisplay;
return seasonalBackground;
}
}
switch (introSequence.Value)
{