diff --git a/osu-framework b/osu-framework
index bf6a3dc401..1c08c1fec4 160000
--- a/osu-framework
+++ b/osu-framework
@@ -1 +1 @@
-Subproject commit bf6a3dc40176ee4f921012808070e014fc4a5779
+Subproject commit 1c08c1fec496e9d64ba8f30ff0464cd5cdf567b6
diff --git a/osu.Desktop.VisualTests/VisualTestGame.cs b/osu.Desktop.VisualTests/VisualTestGame.cs
index 0392dc5443..e0d168390b 100644
--- a/osu.Desktop.VisualTests/VisualTestGame.cs
+++ b/osu.Desktop.VisualTests/VisualTestGame.cs
@@ -14,7 +14,7 @@ namespace osu.Desktop.VisualTests
{
base.LoadComplete();
- new BackgroundScreenDefault { Depth = 10 }.LoadAsync(this, AddInternal);
+ LoadComponentAsync(new BackgroundScreenDefault { Depth = 10 }, AddInternal);
// Have to construct this here, rather than in the constructor, because
// we depend on some dependencies to be loaded within OsuGameBase.load().
diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs
index 95870125e3..c2bb39ac4a 100644
--- a/osu.Desktop/OsuGameDesktop.cs
+++ b/osu.Desktop/OsuGameDesktop.cs
@@ -29,7 +29,7 @@ namespace osu.Desktop
{
base.LoadComplete();
- versionManager.LoadAsync(this);
+ LoadComponentAsync(versionManager);
ScreenChanged += s =>
{
if (!versionManager.IsAlive && s is Intro)
diff --git a/osu.Game.Modes.Osu/Objects/Slider.cs b/osu.Game.Modes.Osu/Objects/Slider.cs
index 213a4a7bee..38d1dfda5d 100644
--- a/osu.Game.Modes.Osu/Objects/Slider.cs
+++ b/osu.Game.Modes.Osu/Objects/Slider.cs
@@ -14,6 +14,11 @@ namespace osu.Game.Modes.Osu.Objects
{
public class Slider : OsuHitObject, IHasCurve
{
+ ///
+ /// Scoring distance with a speed-adjusted beat length of 1 second.
+ ///
+ private const float base_scoring_distance = 100;
+
public IHasCurve CurveObject { get; set; }
public SliderCurve Curve => CurveObject.Curve;
@@ -51,13 +56,10 @@ namespace osu.Game.Modes.Osu.Objects
{
base.ApplyDefaults(timing, difficulty);
- ControlPoint overridePoint;
- ControlPoint timingPoint = timing.TimingPointAt(StartTime, out overridePoint);
- var velocityAdjustment = overridePoint?.VelocityAdjustment ?? 1;
- var baseVelocity = 100 * difficulty.SliderMultiplier / velocityAdjustment;
+ double scoringDistance = base_scoring_distance * difficulty.SliderMultiplier / timing.SpeedMultiplierAt(StartTime);
- Velocity = baseVelocity / timingPoint.BeatLength;
- TickDistance = baseVelocity / difficulty.SliderTickRate;
+ Velocity = scoringDistance / timing.BeatLengthAt(StartTime);
+ TickDistance = scoringDistance / difficulty.SliderTickRate;
}
public IEnumerable Ticks
diff --git a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs
index 1f9241268b..40277e18fb 100644
--- a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs
+++ b/osu.Game.Modes.Taiko/Objects/DrumRoll.cs
@@ -13,6 +13,11 @@ namespace osu.Game.Modes.Taiko.Objects
{
public class DrumRoll : TaikoHitObject, IHasDistance
{
+ ///
+ /// Drum roll distance that results in a duration of 1 speed-adjusted beat length.
+ ///
+ private const float base_distance = 100;
+
public double EndTime => StartTime + Distance / Velocity;
public double Duration => EndTime - StartTime;
@@ -59,7 +64,7 @@ namespace osu.Game.Modes.Taiko.Objects
{
base.ApplyDefaults(timing, difficulty);
- Velocity = timing.SliderVelocityAt(StartTime) * difficulty.SliderMultiplier / 1000;
+ Velocity = base_distance * difficulty.SliderMultiplier * difficulty.SliderTickRate * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime);
TickTimeDistance = timing.BeatLengthAt(StartTime);
//TODO: move this to legacy conversion code to allow for direct division without special case.
diff --git a/osu.Game.Modes.Taiko/Objects/TaikoHitObject.cs b/osu.Game.Modes.Taiko/Objects/TaikoHitObject.cs
index ac47a3bc88..327c0402ab 100644
--- a/osu.Game.Modes.Taiko/Objects/TaikoHitObject.cs
+++ b/osu.Game.Modes.Taiko/Objects/TaikoHitObject.cs
@@ -14,6 +14,11 @@ namespace osu.Game.Modes.Taiko.Objects
///
public const float CIRCLE_RADIUS = 42f;
+ ///
+ /// Time (in milliseconds) to scroll in the hit object with a speed-adjusted beat length of 1 second.
+ ///
+ private const double base_scroll_time = 6000;
+
///
/// The time to scroll in the HitObject.
///
@@ -34,7 +39,7 @@ namespace osu.Game.Modes.Taiko.Objects
{
base.ApplyDefaults(timing, difficulty);
- PreEmpt = 600 / (timing.SliderVelocityAt(StartTime) * difficulty.SliderMultiplier) * 1000;
+ PreEmpt = base_scroll_time / difficulty.SliderMultiplier * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime) / 1000;
ControlPoint overridePoint;
Kiai = timing.TimingPointAt(StartTime, out overridePoint).KiaiMode;
diff --git a/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs b/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs
index e26dcac16b..89399a56ff 100644
--- a/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs
+++ b/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs
@@ -33,19 +33,15 @@ namespace osu.Game.Beatmaps.Drawables
Children = new Drawable[]
{
- new DelayedLoadContainer
- {
- RelativeSizeAxes = Axes.Both,
- TimeBeforeLoad = 300,
- FinishedLoading = d => d.FadeInFromZero(400, EasingTypes.Out),
- Children = new[]
+ new DelayedLoadWrapper(
+ new PanelBackground(beatmap)
{
- new PanelBackground(beatmap)
- {
- RelativeSizeAxes = Axes.Both,
- Depth = 1,
- }
+ RelativeSizeAxes = Axes.Both,
+ OnLoadComplete = d => d.FadeInFromZero(400, EasingTypes.Out),
}
+ )
+ {
+ TimeBeforeLoad = 300,
},
new FillFlowContainer
{
diff --git a/osu.Game/Beatmaps/Timing/TimingInfo.cs b/osu.Game/Beatmaps/Timing/TimingInfo.cs
index 0e47ba983b..076618beea 100644
--- a/osu.Game/Beatmaps/Timing/TimingInfo.cs
+++ b/osu.Game/Beatmaps/Timing/TimingInfo.cs
@@ -20,11 +20,11 @@ namespace osu.Game.Beatmaps.Timing
}
///
- /// Finds the BPM multiplier at a time.
+ /// Finds the speed multiplier at a time.
///
- /// The time to find the BPM multiplier at.
- /// The BPM multiplier.
- public double BPMMultiplierAt(double time)
+ /// The time to find the speed multiplier at.
+ /// The speed multiplier.
+ public double SpeedMultiplierAt(double time)
{
ControlPoint overridePoint;
ControlPoint timingPoint = TimingPointAt(time, out overridePoint);
@@ -33,10 +33,10 @@ namespace osu.Game.Beatmaps.Timing
}
///
- /// Finds the beat length at a time.
+ /// Finds the beat length at a time. This is expressed in milliseconds.
///
/// The time to find the beat length at.
- /// The beat length in milliseconds.
+ /// The beat length.
public double BeatLengthAt(double time)
{
ControlPoint overridePoint;
@@ -45,32 +45,6 @@ namespace osu.Game.Beatmaps.Timing
return timingPoint.BeatLength;
}
- ///
- /// Finds the beat velocity at a time.
- ///
- /// The time to find the velocity at.
- /// The velocity.
- public double BeatVelocityAt(double time)
- {
- ControlPoint overridePoint;
- ControlPoint timingPoint = TimingPointAt(time, out overridePoint);
-
- return overridePoint?.VelocityAdjustment ?? timingPoint?.VelocityAdjustment ?? 1;
- }
-
- ///
- /// Finds the beat length at a time.
- ///
- /// The time to find the beat length at.
- /// The beat length in positional length units.
- public double BeatDistanceAt(double time)
- {
- ControlPoint overridePoint;
- ControlPoint timingPoint = TimingPointAt(time, out overridePoint);
-
- return (timingPoint?.BeatLength ?? 1) * (overridePoint?.VelocityAdjustment ?? timingPoint?.VelocityAdjustment ?? 1);
- }
-
///
/// Finds the timing point at a time.
///
@@ -102,21 +76,5 @@ namespace osu.Game.Beatmaps.Timing
return timingPoint ?? ControlPoint.Default;
}
-
- ///
- /// Finds the slider velocity at a time.
- ///
- /// The time to find the slider velocity at.
- /// The slider velocity in milliseconds.
- public double SliderVelocityAt(double time)
- {
- const double base_scoring_distance = 100;
-
- double beatDistance = BeatDistanceAt(time);
-
- if (beatDistance > 0)
- return base_scoring_distance / beatDistance * 1000;
- return base_scoring_distance;
- }
}
}
\ No newline at end of file
diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs
index 8ac86c5c67..d75f8b4d8e 100644
--- a/osu.Game/OsuGame.cs
+++ b/osu.Game/OsuGame.cs
@@ -150,7 +150,7 @@ namespace osu.Game
}
});
- (screenStack = new Loader()).LoadAsync(this, d =>
+ LoadComponentAsync(screenStack = new Loader(), d =>
{
screenStack.ModePushed += screenAdded;
screenStack.Exited += screenRemoved;
@@ -158,27 +158,27 @@ namespace osu.Game
});
//overlay elements
- (chat = new ChatOverlay { Depth = 0 }).LoadAsync(this, overlayContent.Add);
- (options = new OptionsOverlay { Depth = -1 }).LoadAsync(this, overlayContent.Add);
- (musicController = new MusicController
+ LoadComponentAsync(chat = new ChatOverlay { Depth = 0 }, overlayContent.Add);
+ LoadComponentAsync(options = new OptionsOverlay { Depth = -1 }, overlayContent.Add);
+ LoadComponentAsync(musicController = new MusicController
{
Depth = -2,
Position = new Vector2(0, Toolbar.HEIGHT),
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
- }).LoadAsync(this, overlayContent.Add);
+ }, overlayContent.Add);
- (notificationManager = new NotificationManager
+ LoadComponentAsync(notificationManager = new NotificationManager
{
Depth = -2,
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
- }).LoadAsync(this, overlayContent.Add);
+ }, overlayContent.Add);
- (dialogOverlay = new DialogOverlay
+ LoadComponentAsync(dialogOverlay = new DialogOverlay
{
Depth = -4,
- }).LoadAsync(this, overlayContent.Add);
+ }, overlayContent.Add);
Logger.NewEntry += entry =>
{
@@ -195,12 +195,12 @@ namespace osu.Game
Dependencies.Cache(notificationManager);
Dependencies.Cache(dialogOverlay);
- (Toolbar = new Toolbar
+ LoadComponentAsync(Toolbar = new Toolbar
{
Depth = -3,
OnHome = delegate { intro?.ChildScreen?.MakeCurrent(); },
OnPlayModeChange = m => PlayMode.Value = m,
- }).LoadAsync(this, t =>
+ }, t =>
{
PlayMode.ValueChanged += delegate { Toolbar.SetGameMode(PlayMode.Value); };
PlayMode.TriggerChange();
diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs
index 2f8f0ab650..aa0ea1ae9b 100644
--- a/osu.Game/Overlays/MusicController.cs
+++ b/osu.Game/Overlays/MusicController.cs
@@ -347,12 +347,9 @@ namespace osu.Game.Overlays
}
});
- dragContainer.Add(new AsyncLoadContainer
+ dragContainer.Add(new AsyncLoadWrapper(new MusicControllerBackground(beatmap)
{
- RelativeSizeAxes = Axes.Both,
- Depth = float.MaxValue,
- Children = new[] { new MusicControllerBackground(beatmap) },
- FinishedLoading = d =>
+ OnLoadComplete = d =>
{
switch (direction)
{
@@ -370,6 +367,9 @@ namespace osu.Game.Overlays
currentBackground.Expire();
currentBackground = d;
}
+ })
+ {
+ Depth = float.MaxValue,
});
};
}
diff --git a/osu.Game/Screens/BackgroundScreen.cs b/osu.Game/Screens/BackgroundScreen.cs
index 317199c6a9..fd40141fcb 100644
--- a/osu.Game/Screens/BackgroundScreen.cs
+++ b/osu.Game/Screens/BackgroundScreen.cs
@@ -3,7 +3,6 @@
using System;
using System.Threading;
-using osu.Framework.Allocation;
using osu.Framework.Screens;
using osu.Framework.Graphics;
using osu.Framework.Input;
@@ -27,21 +26,13 @@ namespace osu.Game.Screens
return false;
}
- private Framework.Game game;
-
- [BackgroundDependencyLoader]
- private void load(Framework.Game game)
- {
- this.game = game;
- }
-
public override bool Push(Screen screen)
{
// When trying to push a non-loaded GameMode, load it asynchronously and re-invoke Push
// once it's done.
if (screen.LoadState == LoadState.NotLoaded)
{
- screen.LoadAsync(game, d => Push((BackgroundScreen)d));
+ LoadComponentAsync(screen, d => Push((BackgroundScreen)d));
return true;
}
diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs
index 6baccdf9c9..ade860f358 100644
--- a/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs
+++ b/osu.Game/Screens/Backgrounds/BackgroundScreenBeatmap.cs
@@ -32,7 +32,7 @@ namespace osu.Game.Screens.Backgrounds
{
var newBackground = beatmap == null ? new Background(@"Backgrounds/bg1") : new BeatmapBackground(beatmap);
- newBackground.LoadAsync(Game, delegate
+ LoadComponentAsync(newBackground, delegate
{
float newDepth = 0;
if (background != null)
diff --git a/osu.Game/Screens/Loader.cs b/osu.Game/Screens/Loader.cs
index 41ca9df83b..30e1538b47 100644
--- a/osu.Game/Screens/Loader.cs
+++ b/osu.Game/Screens/Loader.cs
@@ -20,9 +20,9 @@ namespace osu.Game.Screens
private void load(OsuGame game)
{
if (game.IsDeployedBuild)
- new Disclaimer().LoadAsync(game, d => Push((Screen)d));
+ LoadComponentAsync(new Disclaimer(), d => Push((Screen)d));
else
- new Intro().LoadAsync(game, d => Push((Screen)d));
+ LoadComponentAsync(new Intro(), d => Push((Screen)d));
}
}
}
diff --git a/osu.Game/Screens/Menu/Disclaimer.cs b/osu.Game/Screens/Menu/Disclaimer.cs
index bef98a2d57..4640067017 100644
--- a/osu.Game/Screens/Menu/Disclaimer.cs
+++ b/osu.Game/Screens/Menu/Disclaimer.cs
@@ -88,9 +88,9 @@ namespace osu.Game.Screens.Menu
}
[BackgroundDependencyLoader]
- private void load(OsuGame game, OsuColour colours)
+ private void load(OsuColour colours)
{
- (intro = new Intro()).LoadAsync(game);
+ LoadComponentAsync(intro = new Intro());
iconColour = colours.Yellow;
}
diff --git a/osu.Game/Screens/Menu/Intro.cs b/osu.Game/Screens/Menu/Intro.cs
index 890b3f6970..ac926cba0c 100644
--- a/osu.Game/Screens/Menu/Intro.cs
+++ b/osu.Game/Screens/Menu/Intro.cs
@@ -76,7 +76,7 @@ namespace osu.Game.Screens.Menu
{
bgm.Start();
- (mainMenu = new MainMenu()).LoadAsync(Game);
+ LoadComponentAsync(mainMenu = new MainMenu());
Scheduler.AddDelayed(delegate
{
diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs
index d19dd40938..59528dad91 100644
--- a/osu.Game/Screens/Menu/MainMenu.cs
+++ b/osu.Game/Screens/Menu/MainMenu.cs
@@ -57,7 +57,7 @@ namespace osu.Game.Screens.Menu
[BackgroundDependencyLoader]
private void load(OsuGame game)
{
- background.LoadAsync(game);
+ LoadComponentAsync(background);
buttons.OnSettings = game.ToggleOptions;
@@ -67,10 +67,7 @@ namespace osu.Game.Screens.Menu
private void preloadSongSelect()
{
if (songSelect == null)
- {
- songSelect = new PlaySongSelect();
- songSelect.LoadAsync(Game);
- }
+ LoadComponentAsync(songSelect = new PlaySongSelect());
}
private Screen consumeSongSelect()
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index 73d397b24b..5bdb629393 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -225,7 +225,7 @@ namespace osu.Game.Screens.Play
var newPlayer = new Player();
- newPlayer.LoadAsync(Game, delegate
+ LoadComponentAsync(newPlayer, delegate
{
newPlayer.RestartCount = RestartCount + 1;
ValidForResume = false;
diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs
index d766777697..64d17fd5bb 100644
--- a/osu.Game/Screens/Play/PlayerLoader.cs
+++ b/osu.Game/Screens/Play/PlayerLoader.cs
@@ -50,7 +50,7 @@ namespace osu.Game.Screens.Play
Origin = Anchor.Centre,
});
- player.LoadAsync(Game);
+ LoadComponentAsync(player);
}
protected override void OnEntering(Screen last)
diff --git a/osu.Game/Screens/Select/BeatmapInfoWedge.cs b/osu.Game/Screens/Select/BeatmapInfoWedge.cs
index 3cbf743c15..768cef4645 100644
--- a/osu.Game/Screens/Select/BeatmapInfoWedge.cs
+++ b/osu.Game/Screens/Select/BeatmapInfoWedge.cs
@@ -103,111 +103,109 @@ namespace osu.Game.Screens.Select
labels.AddRange(Ruleset.GetRuleset(beatmap.BeatmapInfo.Mode).GetBeatmapStatistics(beatmap).Select(s => new InfoLabel(s)));
}
- Add(beatmapInfoContainer = new AsyncLoadContainer
- {
- FinishedLoading = d =>
- {
- FadeIn(250);
+ AlwaysPresent = true;
- lastContainer?.FadeOut(250);
- lastContainer?.Expire();
- },
- Depth = newDepth,
- RelativeSizeAxes = Axes.Both,
- Children = new[]
+ Add(beatmapInfoContainer = new AsyncLoadWrapper(
+ new BufferedContainer
{
- new BufferedContainer
+ OnLoadComplete = d =>
{
- PixelSnapping = true,
- CacheDrawnFrameBuffer = true,
- Shear = -Shear,
- RelativeSizeAxes = Axes.Both,
- Children = new Drawable[]
+ FadeIn(250);
+
+ lastContainer?.FadeOut(250);
+ lastContainer?.Expire();
+ },
+ PixelSnapping = true,
+ CacheDrawnFrameBuffer = true,
+ Shear = -Shear,
+ RelativeSizeAxes = Axes.Both,
+ Children = new Drawable[]
+ {
+ // We will create the white-to-black gradient by modulating transparency and having
+ // a black backdrop. This results in an sRGB-space gradient and not linear space,
+ // transitioning from white to black more perceptually uniformly.
+ new Box
{
- // We will create the white-to-black gradient by modulating transparency and having
- // a black backdrop. This results in an sRGB-space gradient and not linear space,
- // transitioning from white to black more perceptually uniformly.
- new Box
+ RelativeSizeAxes = Axes.Both,
+ Colour = Color4.Black,
+ },
+ // We use a container, such that we can set the colour gradient to go across the
+ // vertices of the masked container instead of the vertices of the (larger) sprite.
+ new Container
+ {
+ RelativeSizeAxes = Axes.Both,
+ ColourInfo = ColourInfo.GradientVertical(Color4.White, Color4.White.Opacity(0.3f)),
+ Children = new[]
{
- RelativeSizeAxes = Axes.Both,
- Colour = Color4.Black,
- },
- // We use a container, such that we can set the colour gradient to go across the
- // vertices of the masked container instead of the vertices of the (larger) sprite.
- new Container
- {
- RelativeSizeAxes = Axes.Both,
- ColourInfo = ColourInfo.GradientVertical(Color4.White, Color4.White.Opacity(0.3f)),
- Children = new[]
+ // Zoomed-in and cropped beatmap background
+ new BeatmapBackgroundSprite(beatmap)
{
- // Zoomed-in and cropped beatmap background
- new BeatmapBackgroundSprite(beatmap)
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- FillMode = FillMode.Fill,
- },
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ FillMode = FillMode.Fill,
},
},
- // Text for beatmap info
- new FillFlowContainer
+ },
+ // Text for beatmap info
+ new FillFlowContainer
+ {
+ Anchor = Anchor.BottomLeft,
+ Origin = Anchor.BottomLeft,
+ Direction = FillDirection.Vertical,
+ Margin = new MarginPadding { Top = 10, Left = 25, Right = 10, Bottom = 20 },
+ AutoSizeAxes = Axes.Both,
+ Children = new Drawable[]
{
- Anchor = Anchor.BottomLeft,
- Origin = Anchor.BottomLeft,
- Direction = FillDirection.Vertical,
- Margin = new MarginPadding { Top = 10, Left = 25, Right = 10, Bottom = 20 },
- AutoSizeAxes = Axes.Both,
- Children = new Drawable[]
+ new OsuSpriteText
{
- new OsuSpriteText
+ Font = @"Exo2.0-MediumItalic",
+ Text = metadata.Artist + " -- " + metadata.Title,
+ TextSize = 28,
+ Shadow = true,
+ },
+ new OsuSpriteText
+ {
+ Font = @"Exo2.0-MediumItalic",
+ Text = beatmapInfo.Version,
+ TextSize = 17,
+ Shadow = true,
+ },
+ new FillFlowContainer
+ {
+ Margin = new MarginPadding { Top = 10 },
+ Direction = FillDirection.Horizontal,
+ AutoSizeAxes = Axes.Both,
+ Children = new[]
{
- Font = @"Exo2.0-MediumItalic",
- Text = metadata.Artist + " -- " + metadata.Title,
- TextSize = 28,
- Shadow = true,
- },
- new OsuSpriteText
- {
- Font = @"Exo2.0-MediumItalic",
- Text = beatmapInfo.Version,
- TextSize = 17,
- Shadow = true,
- },
- new FillFlowContainer
- {
- Margin = new MarginPadding { Top = 10 },
- Direction = FillDirection.Horizontal,
- AutoSizeAxes = Axes.Both,
- Children = new[]
+ new OsuSpriteText
{
- new OsuSpriteText
- {
- Font = @"Exo2.0-Medium",
- Text = "mapped by ",
- TextSize = 15,
- Shadow = true,
- },
- new OsuSpriteText
- {
- Font = @"Exo2.0-Bold",
- Text = metadata.Author,
- TextSize = 15,
- Shadow = true,
- },
- }
- },
- new FillFlowContainer
- {
- Margin = new MarginPadding { Top = 20 },
- Spacing = new Vector2(40, 0),
- AutoSizeAxes = Axes.Both,
- Children = labels
- },
- }
- },
- }
+ Font = @"Exo2.0-Medium",
+ Text = "mapped by ",
+ TextSize = 15,
+ Shadow = true,
+ },
+ new OsuSpriteText
+ {
+ Font = @"Exo2.0-Bold",
+ Text = metadata.Author,
+ TextSize = 15,
+ Shadow = true,
+ },
+ }
+ },
+ new FillFlowContainer
+ {
+ Margin = new MarginPadding { Top = 20 },
+ Spacing = new Vector2(40, 0),
+ AutoSizeAxes = Axes.Both,
+ Children = labels
+ },
+ }
+ },
}
- }
+ })
+ {
+ Depth = newDepth,
});
}
diff --git a/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs b/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs
index 9a169b1f10..adcf8fd042 100644
--- a/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs
+++ b/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs
@@ -141,26 +141,23 @@ namespace osu.Game.Screens.Select.Leaderboards
Padding = new MarginPadding(edge_margin),
Children = new Drawable[]
{
- avatar = new DelayedLoadContainer
+ avatar = new DelayedLoadWrapper(
+ new Avatar(Score.User ?? new User { Id = Score.UserID })
+ {
+ RelativeSizeAxes = Axes.Both,
+ CornerRadius = corner_radius,
+ Masking = true,
+ OnLoadComplete = d => d.FadeInFromZero(200),
+ EdgeEffect = new EdgeEffect
+ {
+ Type = EdgeEffectType.Shadow,
+ Radius = 1,
+ Colour = Color4.Black.Opacity(0.2f),
+ },
+ })
{
TimeBeforeLoad = 500,
- FinishedLoading = d => d.FadeInFromZero(200),
Size = new Vector2(HEIGHT - edge_margin * 2, HEIGHT - edge_margin * 2),
- Children = new Drawable[]
- {
- new Avatar(Score.User ?? new User { Id = Score.UserID })
- {
- RelativeSizeAxes = Axes.Both,
- CornerRadius = corner_radius,
- Masking = true,
- EdgeEffect = new EdgeEffect
- {
- Type = EdgeEffectType.Shadow,
- Radius = 1,
- Colour = Color4.Black.Opacity(0.2f),
- },
- },
- }
},
new Container
{
diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs
index fb7ed3809f..78a8e4c177 100644
--- a/osu.Game/Screens/Select/PlaySongSelect.cs
+++ b/osu.Game/Screens/Select/PlaySongSelect.cs
@@ -81,10 +81,10 @@ namespace osu.Game.Screens.Select
{
if (player != null) return;
- (player = new PlayerLoader(new Player
+ LoadComponentAsync(player = new PlayerLoader(new Player
{
Beatmap = Beatmap, //eagerly set this so it's present before push.
- })).LoadAsync(Game, l => Push(player));
+ }), l => Push(player));
}
}
}
diff --git a/osu.Game/Users/UpdateableAvatar.cs b/osu.Game/Users/UpdateableAvatar.cs
index 4fc2298525..7d304e3bbc 100644
--- a/osu.Game/Users/UpdateableAvatar.cs
+++ b/osu.Game/Users/UpdateableAvatar.cs
@@ -40,15 +40,11 @@ namespace osu.Game.Users
{
displayedAvatar?.FadeOut(300);
displayedAvatar?.Expire();
- Add(displayedAvatar = new AsyncLoadContainer
+ Add(displayedAvatar = new AsyncLoadWrapper(new Avatar(user)
{
RelativeSizeAxes = Axes.Both,
- FinishedLoading = d => d.FadeInFromZero(200),
- Children = new[]
- {
- new Avatar(user) { RelativeSizeAxes = Axes.Both }
- }
- });
+ OnLoadComplete = d => d.FadeInFromZero(200),
+ }));
}
}
}
\ No newline at end of file