Merge branch 'master' into music-controller-always-present

This commit is contained in:
Dan Balasescu 2019-06-21 11:57:36 +09:00 committed by GitHub
commit 61d8cb628a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 31 deletions

View File

@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Development;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
@ -12,7 +13,6 @@
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Overlays; using osu.Game.Overlays;
using osu.Game.Overlays.Notifications; using osu.Game.Overlays.Notifications;
using osu.Game.Utils;
using osuTK; using osuTK;
using osuTK.Graphics; using osuTK.Graphics;
@ -61,7 +61,7 @@ private void load(NotificationOverlay notification, OsuColour colours, TextureSt
}, },
new OsuSpriteText new OsuSpriteText
{ {
Colour = DebugUtils.IsDebug ? colours.Red : Color4.White, Colour = DebugUtils.IsDebugBuild ? colours.Red : Color4.White,
Text = game.Version Text = game.Version
}, },
} }

View File

@ -216,13 +216,13 @@ private void testMultiplierTextColour(Mod mod, Color4 colour)
private void testRankedText(Mod mod) private void testRankedText(Mod mod)
{ {
AddWaitStep("wait for fade", 1); waitForLoad();
AddAssert("check for ranked", () => modSelect.UnrankedLabel.Alpha == 0); AddAssert("check for ranked", () => modSelect.UnrankedLabel.Alpha == 0);
selectNext(mod); selectNext(mod);
AddWaitStep("wait for fade", 1); waitForLoad();
AddAssert("check for unranked", () => modSelect.UnrankedLabel.Alpha != 0); AddAssert("check for unranked", () => modSelect.UnrankedLabel.Alpha != 0);
selectPrevious(mod); selectPrevious(mod);
AddWaitStep("wait for fade", 1); waitForLoad();
AddAssert("check for ranked", () => modSelect.UnrankedLabel.Alpha == 0); AddAssert("check for ranked", () => modSelect.UnrankedLabel.Alpha == 0);
} }
@ -232,6 +232,7 @@ private void testRankedText(Mod mod)
private void checkSelected(Mod mod) private void checkSelected(Mod mod)
{ {
waitForLoad();
AddAssert($"check {mod.Name} is selected", () => AddAssert($"check {mod.Name} is selected", () =>
{ {
var button = modSelect.GetModButton(mod); var button = modSelect.GetModButton(mod);
@ -239,8 +240,14 @@ private void checkSelected(Mod mod)
}); });
} }
private void waitForLoad()
{
AddUntilStep("wait for icons to load", () => modSelect.AllLoaded);
}
private void checkNotSelected(Mod mod) private void checkNotSelected(Mod mod)
{ {
waitForLoad();
AddAssert($"check {mod.Name} is not selected", () => AddAssert($"check {mod.Name} is not selected", () =>
{ {
var button = modSelect.GetModButton(mod); var button = modSelect.GetModButton(mod);
@ -254,6 +261,8 @@ private class TestModSelectOverlay : ModSelectOverlay
{ {
public new Bindable<IReadOnlyList<Mod>> SelectedMods => base.SelectedMods; public new Bindable<IReadOnlyList<Mod>> SelectedMods => base.SelectedMods;
public bool AllLoaded => ModSectionsContainer.Children.All(c => c.ModIconsLoaded);
public ModButton GetModButton(Mod mod) public ModButton GetModButton(Mod mod)
{ {
var section = ModSectionsContainer.Children.Single(s => s.ModType == mod.Type); var section = ModSectionsContainer.Children.Single(s => s.ModType == mod.Type);

View File

@ -10,6 +10,7 @@
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Audio; using osu.Framework.Audio;
using osu.Framework.Bindables; using osu.Framework.Bindables;
using osu.Framework.Development;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.IO.Stores; using osu.Framework.IO.Stores;
@ -34,7 +35,6 @@
using osu.Game.Scoring; using osu.Game.Scoring;
using osu.Game.Skinning; using osu.Game.Skinning;
using osuTK.Input; using osuTK.Input;
using DebugUtils = osu.Game.Utils.DebugUtils;
namespace osu.Game namespace osu.Game
{ {
@ -97,7 +97,7 @@ public string Version
get get
{ {
if (!IsDeployedBuild) if (!IsDeployedBuild)
return @"local " + (DebugUtils.IsDebug ? @"debug" : @"release"); return @"local " + (DebugUtils.IsDebugBuild ? @"debug" : @"release");
var version = AssemblyVersion; var version = AssemblyVersion;
return $@"{version.Major}.{version.Minor}.{version.Build}"; return $@"{version.Major}.{version.Minor}.{version.Build}";

View File

@ -10,6 +10,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading;
using osu.Framework.Input.Events; using osu.Framework.Input.Events;
using osu.Game.Graphics; using osu.Game.Graphics;
@ -33,6 +34,13 @@ public string Header
public IEnumerable<Mod> SelectedMods => buttons.Select(b => b.SelectedMod).Where(m => m != null); public IEnumerable<Mod> SelectedMods => buttons.Select(b => b.SelectedMod).Where(m => m != null);
private CancellationTokenSource modsLoadCts;
/// <summary>
/// True when all mod icons have completed loading.
/// </summary>
public bool ModIconsLoaded { get; private set; } = true;
public IEnumerable<Mod> Mods public IEnumerable<Mod> Mods
{ {
set set
@ -48,7 +56,15 @@ public IEnumerable<Mod> Mods
}; };
}).ToArray(); }).ToArray();
ButtonsContainer.Children = modContainers; modsLoadCts?.Cancel();
ModIconsLoaded = false;
LoadComponentsAsync(modContainers, c =>
{
ModIconsLoaded = true;
ButtonsContainer.ChildrenEnumerable = c;
}, (modsLoadCts = new CancellationTokenSource()).Token);
buttons = modContainers.OfType<ModButton>().ToArray(); buttons = modContainers.OfType<ModButton>().ToArray();
if (value.Any()) if (value.Any())

View File

@ -3,6 +3,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Development;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Game.Graphics; using osu.Game.Graphics;
@ -12,7 +13,6 @@
using osu.Game.Rulesets; using osu.Game.Rulesets;
using osuTK; using osuTK;
using osuTK.Graphics; using osuTK.Graphics;
using DebugUtils = osu.Game.Utils.DebugUtils;
namespace osu.Game.Overlays.Settings namespace osu.Game.Overlays.Settings
{ {
@ -59,7 +59,7 @@ private void load(OsuGameBase game, OsuColour colours, RulesetStore rulesets)
Text = game.Name, Text = game.Name,
Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold), Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold),
}, },
new BuildDisplay(game.Version, DebugUtils.IsDebug) new BuildDisplay(game.Version, DebugUtils.IsDebugBuild)
{ {
Anchor = Anchor.TopCentre, Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre, Origin = Anchor.TopCentre,

View File

@ -1,21 +0,0 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
namespace osu.Game.Utils
{
public static class DebugUtils
{
public static bool IsDebug
{
get
{
// ReSharper disable once RedundantAssignment
bool isDebug = false;
// Debug.Assert conditions are only evaluated in debug mode
System.Diagnostics.Debug.Assert(isDebug = true);
// ReSharper disable once ConditionIsAlwaysTrueOrFalse
return isDebug;
}
}
}
}