diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5e7f9628fc..f2066f27de 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,6 +2,60 @@ on: [push, pull_request]
name: Continuous Integration
jobs:
+ inspect-code:
+ name: Code Quality
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ # FIXME: Tools won't run in .NET 6.0 unless you install 3.1.x LTS side by side.
+ # https://itnext.io/how-to-support-multiple-net-sdks-in-github-actions-workflows-b988daa884e
+ - name: Install .NET 3.1.x LTS
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: "3.1.x"
+
+ - name: Install .NET 6.0.x
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: "6.0.x"
+
+ - name: Restore Tools
+ run: dotnet tool restore
+
+ - name: Restore Packages
+ run: dotnet restore
+
+ - name: Restore inspectcode cache
+ uses: actions/cache@v3
+ with:
+ path: ${{ github.workspace }}/inspectcode
+ key: inspectcode-${{ hashFiles('.config/dotnet-tools.json') }}-${{ hashFiles('.github/workflows/ci.yml' ) }}
+
+ - name: CodeFileSanity
+ run: |
+ # TODO: Add ignore filters and GitHub Workflow Command Reporting in CFS. That way we don't have to do this workaround.
+ # FIXME: Suppress warnings from templates project
+ exit_code=0
+ while read -r line; do
+ if [[ ! -z "$line" ]]; then
+ echo "::error::$line"
+ exit_code=1
+ fi
+ done <<< $(dotnet codefilesanity)
+ exit $exit_code
+
+ # Temporarily disabled due to test failures, but it won't work anyway until the tool is upgraded.
+ # - name: .NET Format (Dry Run)
+ # run: dotnet format --dry-run --check
+
+ - name: InspectCode
+ run: dotnet jb inspectcode $(pwd)/osu.Desktop.slnf --no-build --output="inspectcodereport.xml" --caches-home="inspectcode" --verbosity=WARN
+
+ - name: NVika
+ run: dotnet nvika parsereport "${{github.workspace}}/inspectcodereport.xml" --treatwarningsaserrors
+
test:
name: Test
runs-on: ${{matrix.os.fullname}}
@@ -93,58 +147,4 @@ jobs:
# cannot accept .sln(f) files as arguments.
# Build just the main game for now.
- name: Build
- run: msbuild osu.iOS/osu.iOS.csproj /restore /p:Configuration=Debug
-
- inspect-code:
- name: Code Quality
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- # FIXME: Tools won't run in .NET 6.0 unless you install 3.1.x LTS side by side.
- # https://itnext.io/how-to-support-multiple-net-sdks-in-github-actions-workflows-b988daa884e
- - name: Install .NET 3.1.x LTS
- uses: actions/setup-dotnet@v1
- with:
- dotnet-version: "3.1.x"
-
- - name: Install .NET 6.0.x
- uses: actions/setup-dotnet@v1
- with:
- dotnet-version: "6.0.x"
-
- - name: Restore Tools
- run: dotnet tool restore
-
- - name: Restore Packages
- run: dotnet restore
-
- - name: Restore inspectcode cache
- uses: actions/cache@v3
- with:
- path: ${{ github.workspace }}/inspectcode
- key: inspectcode-${{ hashFiles('.config/dotnet-tools.json') }}-${{ hashFiles('.github/workflows/ci.yml' ) }}
-
- - name: CodeFileSanity
- run: |
- # TODO: Add ignore filters and GitHub Workflow Command Reporting in CFS. That way we don't have to do this workaround.
- # FIXME: Suppress warnings from templates project
- exit_code=0
- while read -r line; do
- if [[ ! -z "$line" ]]; then
- echo "::error::$line"
- exit_code=1
- fi
- done <<< $(dotnet codefilesanity)
- exit $exit_code
-
- # Temporarily disabled due to test failures, but it won't work anyway until the tool is upgraded.
- # - name: .NET Format (Dry Run)
- # run: dotnet format --dry-run --check
-
- - name: InspectCode
- run: dotnet jb inspectcode $(pwd)/osu.Desktop.slnf --no-build --output="inspectcodereport.xml" --caches-home="inspectcode" --verbosity=WARN
-
- - name: NVika
- run: dotnet nvika parsereport "${{github.workspace}}/inspectcodereport.xml" --treatwarningsaserrors
+ run: msbuild osu.iOS/osu.iOS.csproj /restore /p:Configuration=Debug
\ No newline at end of file
diff --git a/osu.Android.props b/osu.Android.props
index 8b22df418f..6b06305bf9 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -52,7 +52,7 @@
-
+
diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs
index a1c8879105..fa2d2ba38c 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs
@@ -6,10 +6,10 @@ using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Framework.Graphics;
+using osu.Framework.Graphics.Primitives;
using osu.Game.Rulesets.Judgements;
using osu.Game.Rulesets.Osu.Judgements;
using osu.Game.Graphics.Containers;
-using osu.Game.Rulesets.Osu.UI;
using osuTK;
namespace osu.Game.Rulesets.Osu.Objects.Drawables
@@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
// Must be set to update IsHovered as it's used in relax mod to detect osu hit objects.
public override bool HandlePositionalInput => true;
- protected override float SamplePlaybackPosition => HitObject.X / OsuPlayfield.BASE_SIZE.X;
+ protected override float SamplePlaybackPosition => CalculateDrawableRelativePosition(this);
///
/// Whether this can be hit, given a time value.
@@ -89,6 +89,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
///
public void MissForcefully() => ApplyResult(r => r.Type = r.Judgement.MinResult);
+ private RectangleF parentScreenSpaceRectangle => ((DrawableOsuHitObject)ParentHitObject)?.parentScreenSpaceRectangle ?? Parent.ScreenSpaceDrawQuad.AABBFloat;
+
+ ///
+ /// Calculates the position of the given relative to the playfield area.
+ ///
+ /// The drawable to calculate its relative position.
+ protected float CalculateDrawableRelativePosition(Drawable drawable) => (drawable.ScreenSpaceDrawQuad.Centre.X - parentScreenSpaceRectangle.X) / parentScreenSpaceRectangle.Width;
+
protected override JudgementResult CreateResult(Judgement judgement) => new OsuJudgementResult(HitObject, judgement);
}
}
diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
index 1447f131c6..c48ab998ba 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
@@ -13,7 +13,6 @@ using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.Osu.Skinning;
using osu.Game.Rulesets.Osu.Skinning.Default;
-using osu.Game.Rulesets.Osu.UI;
using osu.Game.Rulesets.Scoring;
using osu.Game.Skinning;
using osuTK;
@@ -208,7 +207,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
if (Tracking.Value && slidingSample != null)
// keep the sliding sample playing at the current tracking position
- slidingSample.Balance.Value = CalculateSamplePlaybackBalance(Ball.X / OsuPlayfield.BASE_SIZE.X);
+ slidingSample.Balance.Value = CalculateSamplePlaybackBalance(CalculateDrawableRelativePosition(Ball));
double completionProgress = Math.Clamp((Time.Current - HitObject.StartTime) / HitObject.Duration, 0, 1);
diff --git a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs
index 9f708ace70..f7140537ee 100644
--- a/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs
+++ b/osu.Game.Tests/Visual/Background/TestSceneUserDimBackgrounds.cs
@@ -359,9 +359,9 @@ namespace osu.Game.Tests.Visual.Background
protected override BackgroundScreen CreateBackground() =>
new FadeAccessibleBackground(Beatmap.Value);
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
ApplyToBackground(b => ReplacesBackground.BindTo(b.StoryboardReplacesBackground));
}
diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs
index ea0255ab76..a224a78531 100644
--- a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs
@@ -389,9 +389,9 @@ namespace osu.Game.Tests.Visual.Gameplay
public void ExitViaQuickExit() => PerformExit(false);
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
GameplayClockContainer.Stop();
}
}
diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableSound.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableSound.cs
index ccf13e1e8f..64afe1235b 100644
--- a/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableSound.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableSound.cs
@@ -25,7 +25,7 @@ namespace osu.Game.Tests.Visual.Gameplay
private TestSkinSourceContainer skinSource;
private PausableSkinnableSound skinnableSound;
- [SetUp]
+ [SetUpSteps]
public void SetUpSteps()
{
AddStep("setup hierarchy", () =>
diff --git a/osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs b/osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs
index 559e6ddd89..2ce914ba3d 100644
--- a/osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs
+++ b/osu.Game.Tests/Visual/Navigation/TestScenePerformFromScreen.cs
@@ -230,7 +230,7 @@ namespace osu.Game.Tests.Visual.Navigation
public int ExitAttempts { get; private set; }
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
ExitAttempts++;
@@ -240,7 +240,7 @@ namespace osu.Game.Tests.Visual.Navigation
return true;
}
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
}
@@ -257,7 +257,7 @@ namespace osu.Game.Tests.Visual.Navigation
SubScreenStack.Push(Blocker = new DialogBlockingScreen());
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
if (SubScreenStack.CurrentScreen != null)
{
@@ -265,7 +265,7 @@ namespace osu.Game.Tests.Visual.Navigation
return true;
}
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
}
}
diff --git a/osu.Game.Tests/Visual/Online/TestSceneChannelList.cs b/osu.Game.Tests/Visual/Online/TestSceneChannelList.cs
new file mode 100644
index 0000000000..a3bfbd47a3
--- /dev/null
+++ b/osu.Game.Tests/Visual/Online/TestSceneChannelList.cs
@@ -0,0 +1,188 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+using NUnit.Framework;
+using osu.Framework.Allocation;
+using osu.Framework.Bindables;
+using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
+using osu.Framework.Testing;
+using osu.Framework.Utils;
+using osu.Game.Graphics.Sprites;
+using osu.Game.Online.API.Requests.Responses;
+using osu.Game.Online.Chat;
+using osu.Game.Overlays;
+using osu.Game.Overlays.Chat.ChannelList;
+
+namespace osu.Game.Tests.Visual.Online
+{
+ [TestFixture]
+ public class TestSceneChannelList : OsuTestScene
+ {
+ [Cached]
+ private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Pink);
+
+ [Cached]
+ private readonly Bindable selected = new Bindable();
+
+ private OsuSpriteText selectorText;
+ private OsuSpriteText selectedText;
+ private OsuSpriteText leaveText;
+ private ChannelList channelList;
+
+ [SetUp]
+ public void SetUp()
+ {
+ Schedule(() =>
+ {
+ Child = new GridContainer
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ RelativeSizeAxes = Axes.Both,
+ Height = 0.7f,
+ RowDimensions = new[]
+ {
+ new Dimension(GridSizeMode.Absolute, 20),
+ new Dimension(GridSizeMode.Absolute, 20),
+ new Dimension(GridSizeMode.Absolute, 20),
+ new Dimension(),
+ },
+ Content = new[]
+ {
+ new Drawable[]
+ {
+ selectorText = new OsuSpriteText
+ {
+ Anchor = Anchor.TopCentre,
+ Origin = Anchor.TopCentre,
+ },
+ },
+ new Drawable[]
+ {
+ selectedText = new OsuSpriteText
+ {
+ Anchor = Anchor.TopCentre,
+ Origin = Anchor.TopCentre,
+ },
+ },
+ new Drawable[]
+ {
+ leaveText = new OsuSpriteText
+ {
+ Anchor = Anchor.TopCentre,
+ Origin = Anchor.TopCentre,
+ },
+ },
+ new Drawable[]
+ {
+ channelList = new ChannelList
+ {
+ Anchor = Anchor.TopCentre,
+ Origin = Anchor.TopCentre,
+ RelativeSizeAxes = Axes.Y,
+ Width = 190,
+ },
+ },
+ },
+ };
+
+ channelList.OnRequestSelect += channel =>
+ {
+ channelList.SelectorActive.Value = false;
+ selected.Value = channel;
+ };
+
+ channelList.OnRequestLeave += channel =>
+ {
+ leaveText.Text = $"OnRequestLeave: {channel.Name}";
+ leaveText.FadeOutFromOne(1000, Easing.InQuint);
+ selected.Value = null;
+ channelList.RemoveChannel(channel);
+ };
+
+ channelList.SelectorActive.BindValueChanged(change =>
+ {
+ selectorText.Text = $"Channel Selector Active: {change.NewValue}";
+ selected.Value = null;
+ }, true);
+
+ selected.BindValueChanged(change =>
+ {
+ selectedText.Text = $"Selected Channel: {change.NewValue?.Name ?? "[null]"}";
+ }, true);
+ });
+ }
+
+ [SetUpSteps]
+ public void SetUpSteps()
+ {
+ AddStep("Add Public Channels", () =>
+ {
+ for (int i = 0; i < 10; i++)
+ channelList.AddChannel(createRandomPublicChannel());
+ });
+
+ AddStep("Add Private Channels", () =>
+ {
+ for (int i = 0; i < 10; i++)
+ channelList.AddChannel(createRandomPrivateChannel());
+ });
+ }
+
+ [Test]
+ public void TestVisual()
+ {
+ AddStep("Unread Selected", () =>
+ {
+ if (selected.Value != null)
+ channelList.GetItem(selected.Value).Unread.Value = true;
+ });
+
+ AddStep("Read Selected", () =>
+ {
+ if (selected.Value != null)
+ channelList.GetItem(selected.Value).Unread.Value = false;
+ });
+
+ AddStep("Add Mention Selected", () =>
+ {
+ if (selected.Value != null)
+ channelList.GetItem(selected.Value).Mentions.Value++;
+ });
+
+ AddStep("Add 98 Mentions Selected", () =>
+ {
+ if (selected.Value != null)
+ channelList.GetItem(selected.Value).Mentions.Value += 98;
+ });
+
+ AddStep("Clear Mentions Selected", () =>
+ {
+ if (selected.Value != null)
+ channelList.GetItem(selected.Value).Mentions.Value = 0;
+ });
+ }
+
+ private Channel createRandomPublicChannel()
+ {
+ int id = RNG.Next(0, 10000);
+ return new Channel
+ {
+ Name = $"#channel-{id}",
+ Type = ChannelType.Public,
+ Id = id,
+ };
+ }
+
+ private Channel createRandomPrivateChannel()
+ {
+ int id = RNG.Next(0, 10000);
+ return new Channel(new APIUser
+ {
+ Id = id,
+ Username = $"test user {id}",
+ });
+ }
+ }
+}
diff --git a/osu.Game.Tests/Visual/Online/TestSceneChannelListItem.cs b/osu.Game.Tests/Visual/Online/TestSceneChannelListItem.cs
deleted file mode 100644
index af419c8b91..0000000000
--- a/osu.Game.Tests/Visual/Online/TestSceneChannelListItem.cs
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
-// See the LICENCE file in the repository root for full licence text.
-
-using NUnit.Framework;
-using System.Collections.Generic;
-using System.Linq;
-using osu.Framework.Allocation;
-using osu.Framework.Bindables;
-using osu.Framework.Graphics;
-using osu.Framework.Graphics.Containers;
-using osu.Framework.Graphics.Shapes;
-using osu.Game.Graphics.Sprites;
-using osu.Game.Online.API.Requests.Responses;
-using osu.Game.Online.Chat;
-using osu.Game.Overlays;
-using osu.Game.Overlays.Chat.ChannelList;
-using osuTK;
-
-namespace osu.Game.Tests.Visual.Online
-{
- [TestFixture]
- public class TestSceneChannelListItem : OsuTestScene
- {
- [Cached]
- private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Pink);
-
- [Cached]
- private readonly Bindable selected = new Bindable();
-
- private static readonly List channels = new List
- {
- createPublicChannel("#public-channel"),
- createPublicChannel("#public-channel-long-name"),
- createPrivateChannel("test user", 2),
- createPrivateChannel("test user long name", 3),
- };
-
- private readonly Dictionary channelMap = new Dictionary();
-
- private FillFlowContainer flow;
- private OsuSpriteText selectedText;
- private OsuSpriteText leaveText;
-
- [SetUp]
- public void SetUp()
- {
- Schedule(() =>
- {
- foreach (var item in channelMap.Values)
- item.Expire();
-
- channelMap.Clear();
-
- Child = new FillFlowContainer
- {
- Direction = FillDirection.Vertical,
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- AutoSizeAxes = Axes.Both,
- Spacing = new Vector2(10),
- Children = new Drawable[]
- {
- selectedText = new OsuSpriteText
- {
- Anchor = Anchor.TopCentre,
- Origin = Anchor.TopCentre,
- },
- leaveText = new OsuSpriteText
- {
- Anchor = Anchor.TopCentre,
- Origin = Anchor.TopCentre,
- Height = 16,
- AlwaysPresent = true,
- },
- new Container
- {
- Anchor = Anchor.TopCentre,
- Origin = Anchor.TopCentre,
- AutoSizeAxes = Axes.Y,
- Width = 190,
- Children = new Drawable[]
- {
- new Box
- {
- RelativeSizeAxes = Axes.Both,
- Colour = colourProvider.Background6,
- },
- flow = new FillFlowContainer
- {
- Direction = FillDirection.Vertical,
- RelativeSizeAxes = Axes.X,
- AutoSizeAxes = Axes.Y,
- },
- },
- },
- },
- };
-
- selected.BindValueChanged(change =>
- {
- selectedText.Text = $"Selected Channel: {change.NewValue?.Name ?? "[null]"}";
- }, true);
-
- foreach (var channel in channels)
- {
- var item = new ChannelListItem(channel);
- flow.Add(item);
- channelMap.Add(channel, item);
- item.OnRequestSelect += c => selected.Value = c;
- item.OnRequestLeave += leaveChannel;
- }
- });
- }
-
- [Test]
- public void TestVisual()
- {
- AddStep("Select second item", () => selected.Value = channels.Skip(1).First());
-
- AddStep("Unread Selected", () =>
- {
- if (selected.Value != null)
- channelMap[selected.Value].Unread.Value = true;
- });
-
- AddStep("Read Selected", () =>
- {
- if (selected.Value != null)
- channelMap[selected.Value].Unread.Value = false;
- });
-
- AddStep("Add Mention Selected", () =>
- {
- if (selected.Value != null)
- channelMap[selected.Value].Mentions.Value++;
- });
-
- AddStep("Add 98 Mentions Selected", () =>
- {
- if (selected.Value != null)
- channelMap[selected.Value].Mentions.Value += 98;
- });
-
- AddStep("Clear Mentions Selected", () =>
- {
- if (selected.Value != null)
- channelMap[selected.Value].Mentions.Value = 0;
- });
- }
-
- private void leaveChannel(Channel channel)
- {
- leaveText.Text = $"OnRequestLeave: {channel.Name}";
- leaveText.FadeOutFromOne(1000, Easing.InQuint);
- }
-
- private static Channel createPublicChannel(string name) =>
- new Channel { Name = name, Type = ChannelType.Public, Id = 1234 };
-
- private static Channel createPrivateChannel(string username, int id)
- => new Channel(new APIUser { Id = id, Username = username });
- }
-}
diff --git a/osu.Game.Tests/Visual/TestMultiplayerComponents.cs b/osu.Game.Tests/Visual/TestMultiplayerComponents.cs
index c43ed744bd..4ab201ef46 100644
--- a/osu.Game.Tests/Visual/TestMultiplayerComponents.cs
+++ b/osu.Game.Tests/Visual/TestMultiplayerComponents.cs
@@ -80,10 +80,10 @@ namespace osu.Game.Tests.Visual
public override bool OnBackButton() => (screenStack.CurrentScreen as OsuScreen)?.OnBackButton() ?? base.OnBackButton();
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
if (screenStack.CurrentScreen == null)
- return base.OnExiting(next);
+ return base.OnExiting(e);
screenStack.Exit();
return true;
diff --git a/osu.Game/Graphics/Containers/ScalingContainer.cs b/osu.Game/Graphics/Containers/ScalingContainer.cs
index ca8b6f388f..89432595f3 100644
--- a/osu.Game/Graphics/Containers/ScalingContainer.cs
+++ b/osu.Game/Graphics/Containers/ScalingContainer.cs
@@ -209,7 +209,7 @@ namespace osu.Game.Graphics.Containers
{
protected override bool AllowStoryboardBackground => false;
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
this.FadeInFromZero(4000, Easing.OutQuint);
}
diff --git a/osu.Game/Overlays/AccountCreation/AccountCreationScreen.cs b/osu.Game/Overlays/AccountCreation/AccountCreationScreen.cs
index 7e2ae405cb..6aef358b2e 100644
--- a/osu.Game/Overlays/AccountCreation/AccountCreationScreen.cs
+++ b/osu.Game/Overlays/AccountCreation/AccountCreationScreen.cs
@@ -8,21 +8,21 @@ namespace osu.Game.Overlays.AccountCreation
{
public abstract class AccountCreationScreen : Screen
{
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
this.FadeOut().Delay(200).FadeIn(200);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
this.FadeIn(200);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
this.FadeOut(200);
}
}
diff --git a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs
index 6cf3fb4267..1be1321d85 100644
--- a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs
+++ b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs
@@ -147,9 +147,9 @@ namespace osu.Game.Overlays.AccountCreation
d.Colour = password.Length == 0 ? Color4.White : Interpolation.ValueAt(password.Length, Color4.OrangeRed, Color4.YellowGreen, 0, 8, Easing.In);
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
loadingLayer.Hide();
if (host?.OnScreenKeyboardOverlapsGameWindow != true)
diff --git a/osu.Game/Overlays/AccountCreation/ScreenWarning.cs b/osu.Game/Overlays/AccountCreation/ScreenWarning.cs
index 3d46e9ed94..780a79f8f9 100644
--- a/osu.Game/Overlays/AccountCreation/ScreenWarning.cs
+++ b/osu.Game/Overlays/AccountCreation/ScreenWarning.cs
@@ -31,7 +31,7 @@ namespace osu.Game.Overlays.AccountCreation
private const string help_centre_url = "/help/wiki/Help_Centre#login";
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
if (string.IsNullOrEmpty(api?.ProvidedUsername) || game?.UseDevelopmentServer == true)
{
@@ -40,7 +40,7 @@ namespace osu.Game.Overlays.AccountCreation
return;
}
- base.OnEntering(last);
+ base.OnEntering(e);
}
[BackgroundDependencyLoader(true)]
diff --git a/osu.Game/Overlays/Chat/ChannelList/ChannelList.cs b/osu.Game/Overlays/Chat/ChannelList/ChannelList.cs
new file mode 100644
index 0000000000..076dc5719e
--- /dev/null
+++ b/osu.Game/Overlays/Chat/ChannelList/ChannelList.cs
@@ -0,0 +1,135 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+#nullable enable
+
+using System;
+using System.Collections.Generic;
+using osu.Framework.Allocation;
+using osu.Framework.Bindables;
+using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
+using osu.Framework.Graphics.Shapes;
+using osu.Game.Graphics;
+using osu.Game.Graphics.Containers;
+using osu.Game.Graphics.Sprites;
+using osu.Game.Online.Chat;
+
+namespace osu.Game.Overlays.Chat.ChannelList
+{
+ public class ChannelList : Container
+ {
+ public Action? OnRequestSelect;
+ public Action? OnRequestLeave;
+
+ public readonly BindableBool SelectorActive = new BindableBool();
+
+ private readonly Dictionary channelMap = new Dictionary();
+
+ private ChannelListItemFlow publicChannelFlow = null!;
+ private ChannelListItemFlow privateChannelFlow = null!;
+
+ [BackgroundDependencyLoader]
+ private void load(OverlayColourProvider colourProvider)
+ {
+ Children = new Drawable[]
+ {
+ new Box
+ {
+ RelativeSizeAxes = Axes.Both,
+ Colour = colourProvider.Background6,
+ },
+ new OsuScrollContainer
+ {
+ Padding = new MarginPadding { Vertical = 7 },
+ RelativeSizeAxes = Axes.Both,
+ ScrollbarAnchor = Anchor.TopRight,
+ ScrollDistance = 35f,
+ Child = new FillFlowContainer
+ {
+ Direction = FillDirection.Vertical,
+ RelativeSizeAxes = Axes.X,
+ AutoSizeAxes = Axes.Y,
+ Children = new Drawable[]
+ {
+ publicChannelFlow = new ChannelListItemFlow("CHANNELS"),
+ new ChannelListSelector
+ {
+ Margin = new MarginPadding { Bottom = 10 },
+ SelectorActive = { BindTarget = SelectorActive },
+ },
+ privateChannelFlow = new ChannelListItemFlow("DIRECT MESSAGES"),
+ },
+ },
+ },
+ };
+ }
+
+ public void AddChannel(Channel channel)
+ {
+ if (channelMap.ContainsKey(channel))
+ return;
+
+ ChannelListItem item = new ChannelListItem(channel);
+ item.OnRequestSelect += chan => OnRequestSelect?.Invoke(chan);
+ item.OnRequestLeave += chan => OnRequestLeave?.Invoke(chan);
+ item.SelectorActive.BindTarget = SelectorActive;
+
+ ChannelListItemFlow flow = getFlowForChannel(channel);
+ channelMap.Add(channel, item);
+ flow.Add(item);
+ }
+
+ public void RemoveChannel(Channel channel)
+ {
+ if (!channelMap.ContainsKey(channel))
+ return;
+
+ ChannelListItem item = channelMap[channel];
+ ChannelListItemFlow flow = getFlowForChannel(channel);
+
+ channelMap.Remove(channel);
+ flow.Remove(item);
+ }
+
+ public ChannelListItem GetItem(Channel channel)
+ {
+ if (!channelMap.ContainsKey(channel))
+ throw new ArgumentOutOfRangeException();
+
+ return channelMap[channel];
+ }
+
+ private ChannelListItemFlow getFlowForChannel(Channel channel)
+ {
+ switch (channel.Type)
+ {
+ case ChannelType.Public:
+ return publicChannelFlow;
+
+ case ChannelType.PM:
+ return privateChannelFlow;
+
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+ }
+
+ private class ChannelListItemFlow : FillFlowContainer
+ {
+ public ChannelListItemFlow(string label)
+ {
+ Direction = FillDirection.Vertical;
+ RelativeSizeAxes = Axes.X;
+ AutoSizeAxes = Axes.Y;
+
+ Add(new OsuSpriteText
+ {
+ Text = label,
+ Margin = new MarginPadding { Left = 18, Bottom = 5 },
+ Font = OsuFont.Torus.With(size: 12, weight: FontWeight.SemiBold),
+ });
+ }
+ }
+ }
+}
diff --git a/osu.Game/Overlays/Chat/ChannelList/ChannelListItem.cs b/osu.Game/Overlays/Chat/ChannelList/ChannelListItem.cs
index 43574351ed..7c4a72559b 100644
--- a/osu.Game/Overlays/Chat/ChannelList/ChannelListItem.cs
+++ b/osu.Game/Overlays/Chat/ChannelList/ChannelListItem.cs
@@ -29,12 +29,14 @@ namespace osu.Game.Overlays.Chat.ChannelList
public readonly BindableBool Unread = new BindableBool();
+ public readonly BindableBool SelectorActive = new BindableBool();
+
private readonly Channel channel;
- private Box? hoverBox;
- private Box? selectBox;
- private OsuSpriteText? text;
- private ChannelListItemCloseButton? close;
+ private Box hoverBox = null!;
+ private Box selectBox = null!;
+ private OsuSpriteText text = null!;
+ private ChannelListItemCloseButton close = null!;
[Resolved]
private Bindable selectedChannel { get; set; } = null!;
@@ -124,31 +126,26 @@ namespace osu.Game.Overlays.Chat.ChannelList
{
base.LoadComplete();
- selectedChannel.BindValueChanged(change =>
- {
- if (change.NewValue == channel)
- selectBox?.FadeIn(300, Easing.OutQuint);
- else
- selectBox?.FadeOut(200, Easing.OutQuint);
- }, true);
+ selectedChannel.BindValueChanged(_ => updateSelectState(), true);
+ SelectorActive.BindValueChanged(_ => updateSelectState(), true);
Unread.BindValueChanged(change =>
{
- text!.FadeColour(change.NewValue ? colourProvider.Content1 : colourProvider.Light3, 300, Easing.OutQuint);
+ text.FadeColour(change.NewValue ? colourProvider.Content1 : colourProvider.Light3, 300, Easing.OutQuint);
}, true);
}
protected override bool OnHover(HoverEvent e)
{
- hoverBox?.FadeIn(300, Easing.OutQuint);
- close?.FadeIn(300, Easing.OutQuint);
+ hoverBox.FadeIn(300, Easing.OutQuint);
+ close.FadeIn(300, Easing.OutQuint);
return base.OnHover(e);
}
protected override void OnHoverLost(HoverLostEvent e)
{
- hoverBox?.FadeOut(200, Easing.OutQuint);
- close?.FadeOut(200, Easing.OutQuint);
+ hoverBox.FadeOut(200, Easing.OutQuint);
+ close.FadeOut(200, Easing.OutQuint);
base.OnHoverLost(e);
}
@@ -167,5 +164,13 @@ namespace osu.Game.Overlays.Chat.ChannelList
Masking = true,
};
}
+
+ private void updateSelectState()
+ {
+ if (selectedChannel.Value == channel && !SelectorActive.Value)
+ selectBox.FadeIn(300, Easing.OutQuint);
+ else
+ selectBox.FadeOut(200, Easing.OutQuint);
+ }
}
}
diff --git a/osu.Game/Overlays/Chat/ChannelList/ChannelListSelector.cs b/osu.Game/Overlays/Chat/ChannelList/ChannelListSelector.cs
new file mode 100644
index 0000000000..57ab7584b5
--- /dev/null
+++ b/osu.Game/Overlays/Chat/ChannelList/ChannelListSelector.cs
@@ -0,0 +1,91 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+#nullable enable
+
+using osu.Framework.Allocation;
+using osu.Framework.Bindables;
+using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
+using osu.Framework.Graphics.Shapes;
+using osu.Framework.Input.Events;
+using osu.Game.Graphics;
+using osu.Game.Graphics.Containers;
+using osu.Game.Graphics.Sprites;
+
+namespace osu.Game.Overlays.Chat.ChannelList
+{
+ public class ChannelListSelector : OsuClickableContainer
+ {
+ public readonly BindableBool SelectorActive = new BindableBool();
+
+ private Box hoverBox = null!;
+ private Box selectBox = null!;
+
+ [BackgroundDependencyLoader]
+ private void load(OverlayColourProvider colourProvider)
+ {
+ Height = 30;
+ RelativeSizeAxes = Axes.X;
+
+ Children = new Drawable[]
+ {
+ hoverBox = new Box
+ {
+ RelativeSizeAxes = Axes.Both,
+ Colour = colourProvider.Background3,
+ Alpha = 0f,
+ },
+ selectBox = new Box
+ {
+ RelativeSizeAxes = Axes.Both,
+ Colour = colourProvider.Background4,
+ Alpha = 0f,
+ },
+ new Container
+ {
+ RelativeSizeAxes = Axes.Both,
+ Padding = new MarginPadding { Left = 18, Right = 10 },
+ Child = new OsuSpriteText
+ {
+ Anchor = Anchor.CentreLeft,
+ Origin = Anchor.CentreLeft,
+ Text = "Add More Channels",
+ Font = OsuFont.Torus.With(size: 17, weight: FontWeight.SemiBold),
+ Colour = colourProvider.Light3,
+ Margin = new MarginPadding { Bottom = 2 },
+ RelativeSizeAxes = Axes.X,
+ Truncate = true,
+ },
+ },
+ };
+ }
+
+ protected override void LoadComplete()
+ {
+ base.LoadComplete();
+
+ SelectorActive.BindValueChanged(selector =>
+ {
+ if (selector.NewValue)
+ selectBox.FadeIn(300, Easing.OutQuint);
+ else
+ selectBox.FadeOut(200, Easing.OutQuint);
+ }, true);
+
+ Action = () => SelectorActive.Value = true;
+ }
+
+ protected override bool OnHover(HoverEvent e)
+ {
+ hoverBox.FadeIn(300, Easing.OutQuint);
+ return base.OnHover(e);
+ }
+
+ protected override void OnHoverLost(HoverLostEvent e)
+ {
+ hoverBox.FadeOut(200, Easing.OutQuint);
+ base.OnHoverLost(e);
+ }
+ }
+}
diff --git a/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs b/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs
index 9807a65250..a9312e9a3a 100644
--- a/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs
+++ b/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs
@@ -14,7 +14,6 @@ using osu.Game.Database;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Online.Spectator;
-using osu.Game.Resources.Localisation.Web;
using osu.Game.Screens;
using osu.Game.Screens.OnlinePlay.Match.Components;
using osu.Game.Screens.Play;
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs
index 98bc8d88be..c7fd248842 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs
@@ -124,9 +124,9 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
base.LoadComplete();
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
this.FadeOut(250);
}
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs
index 10d6f0aef5..b7b797936e 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs
@@ -124,20 +124,20 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
protected virtual bool PerformMigration() => game?.Migrate(destination.FullName) != false;
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
this.FadeOut().Delay(250).Then().FadeIn(250);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
// block until migration is finished
if (migrationTask?.IsCompleted == false)
return true;
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
}
}
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs
index 4aea05fb14..86934ae514 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs
@@ -30,10 +30,10 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
this.Exit();
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
taskCompletionSource.TrySetCanceled();
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
}
}
diff --git a/osu.Game/Screens/BackgroundScreen.cs b/osu.Game/Screens/BackgroundScreen.cs
index a706934cce..6084ec4b01 100644
--- a/osu.Game/Screens/BackgroundScreen.cs
+++ b/osu.Game/Screens/BackgroundScreen.cs
@@ -48,7 +48,7 @@ namespace osu.Game.Screens
Scale = new Vector2(1 + x_movement_amount / DrawSize.X * 2);
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
if (animateOnEnter)
{
@@ -59,16 +59,16 @@ namespace osu.Game.Screens
this.MoveToX(0, TRANSITION_LENGTH, Easing.InOutQuart);
}
- base.OnEntering(last);
+ base.OnEntering(e);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
this.MoveToX(-x_movement_amount, TRANSITION_LENGTH, Easing.InOutQuart);
- base.OnSuspending(next);
+ base.OnSuspending(e);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
if (IsLoaded)
{
@@ -76,14 +76,14 @@ namespace osu.Game.Screens
this.MoveToX(x_movement_amount, TRANSITION_LENGTH, Easing.OutExpo);
}
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
if (IsLoaded)
this.MoveToX(0, TRANSITION_LENGTH, Easing.OutExpo);
- base.OnResuming(last);
+ base.OnResuming(e);
}
}
}
diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenBlack.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenBlack.cs
index 9e2559cc56..d946fd41d9 100644
--- a/osu.Game/Screens/Backgrounds/BackgroundScreenBlack.cs
+++ b/osu.Game/Screens/Backgrounds/BackgroundScreenBlack.cs
@@ -19,7 +19,7 @@ namespace osu.Game.Screens.Backgrounds
};
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
Show();
}
diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs
index 30c57733ed..3fde033587 100644
--- a/osu.Game/Screens/Edit/Editor.cs
+++ b/osu.Game/Screens/Edit/Editor.cs
@@ -560,16 +560,16 @@ namespace osu.Game.Screens.Edit
{
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
dimBackground();
resetTrack(true);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
dimBackground();
}
@@ -585,7 +585,7 @@ namespace osu.Game.Screens.Edit
});
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
if (!ExitConfirmed)
{
@@ -613,12 +613,12 @@ namespace osu.Game.Screens.Edit
refetchBeatmap();
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
clock.Stop();
refetchBeatmap();
}
diff --git a/osu.Game/Screens/Edit/GameplayTest/EditorPlayer.cs b/osu.Game/Screens/Edit/GameplayTest/EditorPlayer.cs
index d9e19df350..f7e450b0e2 100644
--- a/osu.Game/Screens/Edit/GameplayTest/EditorPlayer.cs
+++ b/osu.Game/Screens/Edit/GameplayTest/EditorPlayer.cs
@@ -44,9 +44,9 @@ namespace osu.Game.Screens.Edit.GameplayTest
protected override bool CheckModsAllowFailure() => false; // never fail.
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
// finish alpha transforms on entering to avoid gameplay starting in a half-hidden state.
// the finish calls are purposefully not propagated to children to avoid messing up their state.
@@ -54,13 +54,13 @@ namespace osu.Game.Screens.Edit.GameplayTest
GameplayClockContainer.FinishTransforms(false, nameof(Alpha));
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
musicController.Stop();
editorState.Time = GameplayClockContainer.CurrentTime;
editor.RestoreState(editorState);
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
}
}
diff --git a/osu.Game/Screens/Edit/GameplayTest/EditorPlayerLoader.cs b/osu.Game/Screens/Edit/GameplayTest/EditorPlayerLoader.cs
index addc79ba61..c16bb8677c 100644
--- a/osu.Game/Screens/Edit/GameplayTest/EditorPlayerLoader.cs
+++ b/osu.Game/Screens/Edit/GameplayTest/EditorPlayerLoader.cs
@@ -19,9 +19,9 @@ namespace osu.Game.Screens.Edit.GameplayTest
{
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
MetadataInfo.FinishTransforms(true);
}
diff --git a/osu.Game/Screens/Import/FileImportScreen.cs b/osu.Game/Screens/Import/FileImportScreen.cs
index 09870e0bab..32ce54aa29 100644
--- a/osu.Game/Screens/Import/FileImportScreen.cs
+++ b/osu.Game/Screens/Import/FileImportScreen.cs
@@ -118,20 +118,20 @@ namespace osu.Game.Screens.Import
fileSelector.CurrentPath.BindValueChanged(directoryChanged);
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
contentContainer.ScaleTo(0.95f).ScaleTo(1, duration, Easing.OutQuint);
this.FadeInFromZero(duration);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
contentContainer.ScaleTo(0.95f, duration, Easing.OutQuint);
this.FadeOut(duration, Easing.OutQuint);
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
private void directoryChanged(ValueChangedEvent _)
diff --git a/osu.Game/Screens/Loader.cs b/osu.Game/Screens/Loader.cs
index a72ba89dfa..52e83c9e98 100644
--- a/osu.Game/Screens/Loader.cs
+++ b/osu.Game/Screens/Loader.cs
@@ -69,9 +69,9 @@ namespace osu.Game.Screens
private EFToRealmMigrator realmMigrator;
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
LoadComponentAsync(precompiler = CreateShaderPrecompiler(), AddInternal);
diff --git a/osu.Game/Screens/Menu/Disclaimer.cs b/osu.Game/Screens/Menu/Disclaimer.cs
index 22151db0dd..24412cd85e 100644
--- a/osu.Game/Screens/Menu/Disclaimer.cs
+++ b/osu.Game/Screens/Menu/Disclaimer.cs
@@ -171,9 +171,9 @@ namespace osu.Game.Screens.Menu
((IBindable)currentUser).BindTo(api.LocalUser);
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
icon.RotateTo(10);
icon.FadeOut();
diff --git a/osu.Game/Screens/Menu/IntroCircles.cs b/osu.Game/Screens/Menu/IntroCircles.cs
index 2792d05f75..00e2de62f0 100644
--- a/osu.Game/Screens/Menu/IntroCircles.cs
+++ b/osu.Game/Screens/Menu/IntroCircles.cs
@@ -57,10 +57,10 @@ namespace osu.Game.Screens.Menu
}
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
this.FadeOut(300);
- base.OnSuspending(next);
+ base.OnSuspending(e);
}
}
}
diff --git a/osu.Game/Screens/Menu/IntroScreen.cs b/osu.Game/Screens/Menu/IntroScreen.cs
index 5575d3681f..d4072d6202 100644
--- a/osu.Game/Screens/Menu/IntroScreen.cs
+++ b/osu.Game/Screens/Menu/IntroScreen.cs
@@ -164,9 +164,9 @@ namespace osu.Game.Screens.Menu
}
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
ensureEventuallyArrivingAtMenu();
}
@@ -194,7 +194,7 @@ namespace osu.Game.Screens.Menu
}, 5000);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
this.FadeIn(300);
@@ -237,12 +237,12 @@ namespace osu.Game.Screens.Menu
//don't want to fade out completely else we will stop running updates.
Game.FadeTo(0.01f, fadeOutTime).OnComplete(_ => this.Exit());
- base.OnResuming(last);
+ base.OnResuming(e);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
initialBeatmap = null;
}
diff --git a/osu.Game/Screens/Menu/IntroTriangles.cs b/osu.Game/Screens/Menu/IntroTriangles.cs
index b6b6bf2ad7..ba8314f103 100644
--- a/osu.Game/Screens/Menu/IntroTriangles.cs
+++ b/osu.Game/Screens/Menu/IntroTriangles.cs
@@ -89,9 +89,9 @@ namespace osu.Game.Screens.Menu
}
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
// ensure the background is shown, even if the TriangleIntroSequence failed to do so.
background.ApplyToBackground(b => b.Show());
@@ -100,9 +100,9 @@ namespace osu.Game.Screens.Menu
intro.Expire();
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
background.FadeOut(100);
}
diff --git a/osu.Game/Screens/Menu/IntroWelcome.cs b/osu.Game/Screens/Menu/IntroWelcome.cs
index 27eaa7eb3a..9a6c949cad 100644
--- a/osu.Game/Screens/Menu/IntroWelcome.cs
+++ b/osu.Game/Screens/Menu/IntroWelcome.cs
@@ -106,9 +106,9 @@ namespace osu.Game.Screens.Menu
}
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
background.FadeOut(100);
}
diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs
index 08df06816b..c9ce077695 100644
--- a/osu.Game/Screens/Menu/MainMenu.cs
+++ b/osu.Game/Screens/Menu/MainMenu.cs
@@ -176,12 +176,12 @@ namespace osu.Game.Screens.Menu
[Resolved]
private Storage storage { get; set; }
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
buttons.FadeInFromZero(500);
- if (last is IntroScreen && musicController.TrackLoaded)
+ if (e.Last is IntroScreen && musicController.TrackLoaded)
{
var track = musicController.CurrentTrack;
@@ -249,9 +249,9 @@ namespace osu.Game.Screens.Menu
seq.OnAbort(_ => buttons.SetOsuLogo(null));
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
buttons.State = ButtonSystemState.EnteringMode;
@@ -261,9 +261,9 @@ namespace osu.Game.Screens.Menu
sideFlashes.FadeOut(64, Easing.OutQuint);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
ApplyToBackground(b => (b as BackgroundScreenDefault)?.Next());
@@ -273,7 +273,7 @@ namespace osu.Game.Screens.Menu
musicController.EnsurePlayingSomething();
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
if (!exitConfirmed && dialogOverlay != null)
{
@@ -291,7 +291,7 @@ namespace osu.Game.Screens.Menu
songTicker.Hide();
this.FadeOut(3000);
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
public void PresentBeatmap(WorkingBeatmap beatmap, RulesetInfo ruleset)
diff --git a/osu.Game/Screens/OnlinePlay/Components/OnlinePlayBackgroundScreen.cs b/osu.Game/Screens/OnlinePlay/Components/OnlinePlayBackgroundScreen.cs
index 8906bebf0e..9e964de31e 100644
--- a/osu.Game/Screens/OnlinePlay/Components/OnlinePlayBackgroundScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Components/OnlinePlayBackgroundScreen.cs
@@ -91,15 +91,15 @@ namespace osu.Game.Screens.OnlinePlay.Components
AddInternal(background = newBackground);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
this.MoveToX(0, TRANSITION_LENGTH);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
- bool result = base.OnExiting(next);
+ bool result = base.OnExiting(e);
this.MoveToX(0);
return result;
}
diff --git a/osu.Game/Screens/OnlinePlay/Lounge/LoungeBackgroundScreen.cs b/osu.Game/Screens/OnlinePlay/Lounge/LoungeBackgroundScreen.cs
index 926c35c5da..52a902f5da 100644
--- a/osu.Game/Screens/OnlinePlay/Lounge/LoungeBackgroundScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Lounge/LoungeBackgroundScreen.cs
@@ -33,7 +33,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge
playlist.Clear();
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
// This screen never exits.
return true;
diff --git a/osu.Game/Screens/OnlinePlay/Lounge/LoungeSubScreen.cs b/osu.Game/Screens/OnlinePlay/Lounge/LoungeSubScreen.cs
index a2d3b7f4fc..ec55ae79ce 100644
--- a/osu.Game/Screens/OnlinePlay/Lounge/LoungeSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Lounge/LoungeSubScreen.cs
@@ -238,15 +238,15 @@ namespace osu.Game.Screens.OnlinePlay.Lounge
#endregion
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
onReturning();
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
Debug.Assert(selectionLease != null);
@@ -261,16 +261,16 @@ namespace osu.Game.Screens.OnlinePlay.Lounge
onReturning();
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
onLeaving();
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
onLeaving();
- base.OnSuspending(next);
+ base.OnSuspending(e);
}
protected override void OnFocus(FocusEvent e)
diff --git a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
index a382f65d84..cc1f842f8c 100644
--- a/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs
@@ -290,35 +290,35 @@ namespace osu.Game.Screens.OnlinePlay.Match
protected void ShowUserModSelect() => userModsSelectOverlay.Show();
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
beginHandlingTrack();
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
endHandlingTrack();
- base.OnSuspending(next);
+ base.OnSuspending(e);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
updateWorkingBeatmap();
beginHandlingTrack();
Scheduler.AddOnce(UpdateMods);
Scheduler.AddOnce(updateRuleset);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
RoomManager?.PartRoom();
Mods.Value = Array.Empty();
endHandlingTrack();
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
protected void StartPlay()
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/Multiplayer.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/Multiplayer.cs
index 2482d52492..66f6935bcc 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/Multiplayer.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/Multiplayer.cs
@@ -35,14 +35,14 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
transitionFromResults();
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
if (client.Room == null)
return;
- if (!(last is MultiplayerPlayerLoader playerLoader))
+ if (!(e.Last is MultiplayerPlayerLoader playerLoader))
return;
// If gameplay wasn't finished, then we have a simple path back to the idle state by aborting gameplay.
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerLoungeSubScreen.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerLoungeSubScreen.cs
index 5cdec52bc2..a05f248d3a 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerLoungeSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerLoungeSubScreen.cs
@@ -25,13 +25,13 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
[Resolved]
private MultiplayerClient client { get; set; }
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
// Upon having left a room, we don't know whether we were the only participant, and whether the room is now closed as a result of leaving it.
// To work around this, temporarily remove the room and trigger an immediate listing poll.
- if (last is MultiplayerMatchSubScreen match)
+ if (e.Last is MultiplayerMatchSubScreen match)
{
RoomManager.RemoveRoom(match.Room);
ListingPollingComponent.PollImmediately();
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs
index 0dbf73fc5b..769873f74c 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs
@@ -242,14 +242,14 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
private bool exitConfirmed;
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
// the room may not be left immediately after a disconnection due to async flow,
// so checking the IsConnected status is also required.
if (client.Room == null || !client.IsConnected.Value)
{
// room has not been created yet; exit immediately.
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
if (!exitConfirmed && dialogOverlay != null)
@@ -268,7 +268,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
return true;
}
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
private ModSettingChangeTracker modSettingChangeTracker;
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayerLoader.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayerLoader.cs
index 772651727e..53dea83f18 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayerLoader.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayerLoader.cs
@@ -18,10 +18,10 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
{
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
- player = (Player)next;
+ base.OnSuspending(e);
+ player = (Player)e.Next;
}
}
}
diff --git a/osu.Game/Screens/OnlinePlay/OnlinePlayScreen.cs b/osu.Game/Screens/OnlinePlay/OnlinePlayScreen.cs
index c56d04d5ac..ff4225e155 100644
--- a/osu.Game/Screens/OnlinePlay/OnlinePlayScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/OnlinePlayScreen.cs
@@ -110,7 +110,7 @@ namespace osu.Game.Screens.OnlinePlay
}
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
this.FadeIn();
waves.Show();
@@ -118,35 +118,35 @@ namespace osu.Game.Screens.OnlinePlay
Mods.SetDefault();
if (loungeSubScreen.IsCurrentScreen())
- loungeSubScreen.OnEntering(last);
+ loungeSubScreen.OnEntering(e);
else
loungeSubScreen.MakeCurrent();
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
this.FadeIn(250);
this.ScaleTo(1, 250, Easing.OutSine);
Debug.Assert(screenStack.CurrentScreen != null);
- screenStack.CurrentScreen.OnResuming(last);
+ screenStack.CurrentScreen.OnResuming(e);
- base.OnResuming(last);
+ base.OnResuming(e);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
this.ScaleTo(1.1f, 250, Easing.InSine);
this.FadeOut(250);
Debug.Assert(screenStack.CurrentScreen != null);
- screenStack.CurrentScreen.OnSuspending(next);
+ screenStack.CurrentScreen.OnSuspending(e);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
var subScreen = screenStack.CurrentScreen as Drawable;
- if (subScreen?.IsLoaded == true && screenStack.CurrentScreen.OnExiting(next))
+ if (subScreen?.IsLoaded == true && screenStack.CurrentScreen.OnExiting(e))
return true;
RoomManager.PartRoom();
@@ -155,7 +155,7 @@ namespace osu.Game.Screens.OnlinePlay
this.Delay(WaveContainer.DISAPPEAR_DURATION).FadeOut();
- base.OnExiting(next);
+ base.OnExiting(e);
return false;
}
diff --git a/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs b/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs
index 7b64784316..6a559dbb2c 100644
--- a/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs
+++ b/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs
@@ -141,7 +141,7 @@ namespace osu.Game.Screens.OnlinePlay
return base.OnBackButton();
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
if (!itemSelected)
{
@@ -150,7 +150,7 @@ namespace osu.Game.Screens.OnlinePlay
Mods.Value = initialMods;
}
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
protected override ModSelectOverlay CreateModSelectOverlay() => new UserModSelectOverlay
diff --git a/osu.Game/Screens/OnlinePlay/OnlinePlaySubScreen.cs b/osu.Game/Screens/OnlinePlay/OnlinePlaySubScreen.cs
index 3411c4afb1..07e0f60011 100644
--- a/osu.Game/Screens/OnlinePlay/OnlinePlaySubScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/OnlinePlaySubScreen.cs
@@ -27,28 +27,28 @@ namespace osu.Game.Screens.OnlinePlay
public const double DISAPPEAR_DURATION = 500;
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
this.FadeInFromZero(APPEAR_DURATION, Easing.OutQuint);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
- base.OnExiting(next);
+ base.OnExiting(e);
this.FadeOut(DISAPPEAR_DURATION, Easing.OutQuint);
return false;
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
this.FadeIn(APPEAR_DURATION, Easing.OutQuint);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
this.FadeOut(DISAPPEAR_DURATION, Easing.OutQuint);
}
diff --git a/osu.Game/Screens/OnlinePlay/Playlists/PlaylistsPlayer.cs b/osu.Game/Screens/OnlinePlay/Playlists/PlaylistsPlayer.cs
index 5a7762a3d8..5cba8676c5 100644
--- a/osu.Game/Screens/OnlinePlay/Playlists/PlaylistsPlayer.cs
+++ b/osu.Game/Screens/OnlinePlay/Playlists/PlaylistsPlayer.cs
@@ -45,9 +45,9 @@ namespace osu.Game.Screens.OnlinePlay.Playlists
throw new InvalidOperationException("Current Mods do not match PlaylistItem's RequiredMods");
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
- if (base.OnExiting(next))
+ if (base.OnExiting(e))
return true;
Exited?.Invoke();
diff --git a/osu.Game/Screens/OsuScreen.cs b/osu.Game/Screens/OsuScreen.cs
index ed4901e1fa..4035d168e1 100644
--- a/osu.Game/Screens/OsuScreen.cs
+++ b/osu.Game/Screens/OsuScreen.cs
@@ -171,7 +171,7 @@ namespace osu.Game.Screens
background.ApplyToBackground(action);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
if (PlayResumeSound)
sampleExit?.Play();
@@ -183,19 +183,19 @@ namespace osu.Game.Screens
if (trackAdjustmentStateAtSuspend != null)
musicController.AllowTrackAdjustments = trackAdjustmentStateAtSuspend.Value;
- base.OnResuming(last);
+ base.OnResuming(e);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
trackAdjustmentStateAtSuspend = musicController.AllowTrackAdjustments;
onSuspendingLogo();
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
applyArrivingDefaults(false);
@@ -210,15 +210,15 @@ namespace osu.Game.Screens
}
background = backgroundStack?.CurrentScreen as BackgroundScreen;
- base.OnEntering(last);
+ base.OnEntering(e);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
if (ValidForResume && logo != null)
onExitingLogo();
- if (base.OnExiting(next))
+ if (base.OnExiting(e))
return true;
if (ownedBackground != null && backgroundStack?.CurrentScreen == ownedBackground)
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index f99b07c313..2d5a67758a 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -917,9 +917,9 @@ namespace osu.Game.Screens.Play
#region Screen Logic
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
if (!LoadedBeatmapSuccessfully)
return;
@@ -985,15 +985,15 @@ namespace osu.Game.Screens.Play
GameplayClockContainer.Reset(true);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
screenSuspension?.RemoveAndDisposeImmediately();
fadeOut();
- base.OnSuspending(next);
+ base.OnSuspending(e);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
screenSuspension?.RemoveAndDisposeImmediately();
failAnimationLayer?.RemoveFilters();
@@ -1024,7 +1024,7 @@ namespace osu.Game.Screens.Play
musicController.ResetTrackAdjustments();
fadeOut();
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
///
diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs
index aea39bc8ff..494ab51a10 100644
--- a/osu.Game/Screens/Play/PlayerLoader.cs
+++ b/osu.Game/Screens/Play/PlayerLoader.cs
@@ -210,9 +210,9 @@ namespace osu.Game.Screens.Play
#region Screen handling
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
ApplyToBackground(b =>
{
@@ -236,9 +236,9 @@ namespace osu.Game.Screens.Play
showBatteryWarningIfNeeded();
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
Debug.Assert(CurrentPlayer != null);
@@ -254,9 +254,9 @@ namespace osu.Game.Screens.Play
contentIn();
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
BackgroundBrightnessReduction = false;
@@ -268,7 +268,7 @@ namespace osu.Game.Screens.Play
highPassFilter.CutoffTo(0);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
cancelLoad();
ContentOut();
@@ -284,7 +284,7 @@ namespace osu.Game.Screens.Play
BackgroundBrightnessReduction = false;
Beatmap.Value.Track.RemoveAdjustment(AdjustableProperty.Volume, volumeAdjustment);
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
protected override void LogoArriving(OsuLogo logo, bool resuming)
diff --git a/osu.Game/Screens/Play/ReplayPlayerLoader.cs b/osu.Game/Screens/Play/ReplayPlayerLoader.cs
index 9eff4cb8fc..e78f700af2 100644
--- a/osu.Game/Screens/Play/ReplayPlayerLoader.cs
+++ b/osu.Game/Screens/Play/ReplayPlayerLoader.cs
@@ -20,13 +20,13 @@ namespace osu.Game.Screens.Play
Score = score.ScoreInfo;
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
// these will be reverted thanks to PlayerLoader's lease.
Mods.Value = Score.Mods;
Ruleset.Value = Score.Ruleset;
- base.OnEntering(last);
+ base.OnEntering(e);
}
}
}
diff --git a/osu.Game/Screens/Play/SoloSpectator.cs b/osu.Game/Screens/Play/SoloSpectator.cs
index a0b07fcbd9..202527f308 100644
--- a/osu.Game/Screens/Play/SoloSpectator.cs
+++ b/osu.Game/Screens/Play/SoloSpectator.cs
@@ -249,10 +249,10 @@ namespace osu.Game.Screens.Play
beatmapDownloader.Download(beatmapSet);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
previewTrackManager.StopAnyPlaying(this);
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
}
}
diff --git a/osu.Game/Screens/Play/SoloSpectatorPlayer.cs b/osu.Game/Screens/Play/SoloSpectatorPlayer.cs
index 969a5bf2b4..5b601083c2 100644
--- a/osu.Game/Screens/Play/SoloSpectatorPlayer.cs
+++ b/osu.Game/Screens/Play/SoloSpectatorPlayer.cs
@@ -24,11 +24,11 @@ namespace osu.Game.Screens.Play
SpectatorClient.OnUserBeganPlaying += userBeganPlaying;
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
SpectatorClient.OnUserBeganPlaying -= userBeganPlaying;
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
private void userBeganPlaying(int userId, SpectatorState state)
diff --git a/osu.Game/Screens/Play/SpectatorPlayer.cs b/osu.Game/Screens/Play/SpectatorPlayer.cs
index c0682952c3..09bec9b89f 100644
--- a/osu.Game/Screens/Play/SpectatorPlayer.cs
+++ b/osu.Game/Screens/Play/SpectatorPlayer.cs
@@ -91,11 +91,11 @@ namespace osu.Game.Screens.Play
DrawableRuleset?.SetReplayScore(score);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
SpectatorClient.OnNewFrames -= userSentFrames;
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
protected override void Dispose(bool isDisposing)
diff --git a/osu.Game/Screens/Play/SpectatorPlayerLoader.cs b/osu.Game/Screens/Play/SpectatorPlayerLoader.cs
index 10cc36c9a9..9ca5475ee4 100644
--- a/osu.Game/Screens/Play/SpectatorPlayerLoader.cs
+++ b/osu.Game/Screens/Play/SpectatorPlayerLoader.cs
@@ -20,13 +20,13 @@ namespace osu.Game.Screens.Play
Score = score.ScoreInfo;
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
// these will be reverted thanks to PlayerLoader's lease.
Mods.Value = Score.Mods;
Ruleset.Value = Score.Ruleset;
- base.OnEntering(last);
+ base.OnEntering(e);
}
}
}
diff --git a/osu.Game/Screens/Play/SubmittingPlayer.cs b/osu.Game/Screens/Play/SubmittingPlayer.cs
index b1f2bccddf..b62dc1e5a6 100644
--- a/osu.Game/Screens/Play/SubmittingPlayer.cs
+++ b/osu.Game/Screens/Play/SubmittingPlayer.cs
@@ -115,9 +115,9 @@ namespace osu.Game.Screens.Play
await submitScore(score).ConfigureAwait(false);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
- bool exiting = base.OnExiting(next);
+ bool exiting = base.OnExiting(e);
if (LoadedBeatmapSuccessfully)
submitScore(Score.DeepClone());
diff --git a/osu.Game/Screens/Ranking/ResultsScreen.cs b/osu.Game/Screens/Ranking/ResultsScreen.cs
index cb842ce4a0..98514cd846 100644
--- a/osu.Game/Screens/Ranking/ResultsScreen.cs
+++ b/osu.Game/Screens/Ranking/ResultsScreen.cs
@@ -231,9 +231,9 @@ namespace osu.Game.Screens.Ranking
lastFetchCompleted = true;
});
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
ApplyToBackground(b =>
{
@@ -244,9 +244,9 @@ namespace osu.Game.Screens.Ranking
bottomPanel.FadeTo(1, 250);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
- if (base.OnExiting(next))
+ if (base.OnExiting(e))
return true;
this.FadeOut(100);
diff --git a/osu.Game/Screens/ScreenWhiteBox.cs b/osu.Game/Screens/ScreenWhiteBox.cs
index 8b38b67f5c..3a9e7b8f18 100644
--- a/osu.Game/Screens/ScreenWhiteBox.cs
+++ b/osu.Game/Screens/ScreenWhiteBox.cs
@@ -28,25 +28,25 @@ namespace osu.Game.Screens
protected override BackgroundScreen CreateBackground() => new BackgroundScreenCustom(@"Backgrounds/bg2");
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
message.TextContainer.MoveTo(new Vector2(DrawSize.X / 16, 0), transition_time, Easing.OutExpo);
this.FadeOut(transition_time, Easing.OutExpo);
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
- base.OnSuspending(next);
+ base.OnSuspending(e);
message.TextContainer.MoveTo(new Vector2(-(DrawSize.X / 16), 0), transition_time, Easing.OutExpo);
this.FadeOut(transition_time, Easing.OutExpo);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
message.TextContainer.MoveTo(Vector2.Zero, transition_time, Easing.OutExpo);
this.FadeIn(transition_time, Easing.OutExpo);
diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs
index 4a991ffc66..ec8b2e029a 100644
--- a/osu.Game/Screens/Select/PlaySongSelect.cs
+++ b/osu.Game/Screens/Select/PlaySongSelect.cs
@@ -109,9 +109,9 @@ namespace osu.Game.Screens.Select
}
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
if (playerLoader != null)
{
diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs
index dc505063d1..928978cd08 100644
--- a/osu.Game/Screens/Select/SongSelect.cs
+++ b/osu.Game/Screens/Select/SongSelect.cs
@@ -543,9 +543,9 @@ namespace osu.Game.Screens.Select
}
}
- public override void OnEntering(IScreen last)
+ public override void OnEntering(ScreenTransitionEvent e)
{
- base.OnEntering(last);
+ base.OnEntering(e);
this.FadeInFromZero(250);
FilterControl.Activate();
@@ -591,9 +591,9 @@ namespace osu.Game.Screens.Select
logo.FadeOut(logo_transition / 2, Easing.Out);
}
- public override void OnResuming(IScreen last)
+ public override void OnResuming(ScreenTransitionEvent e)
{
- base.OnResuming(last);
+ base.OnResuming(e);
// required due to https://github.com/ppy/osu-framework/issues/3218
ModSelect.SelectedMods.Disabled = false;
@@ -622,7 +622,7 @@ namespace osu.Game.Screens.Select
FilterControl.Activate();
}
- public override void OnSuspending(IScreen next)
+ public override void OnSuspending(ScreenTransitionEvent e)
{
// Handle the case where FinaliseSelection is never called (ie. when a screen is pushed externally).
// Without this, it's possible for a transfer to happen while we are not the current screen.
@@ -640,12 +640,12 @@ namespace osu.Game.Screens.Select
this.FadeOut(250);
FilterControl.Deactivate();
- base.OnSuspending(next);
+ base.OnSuspending(e);
}
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
- if (base.OnExiting(next))
+ if (base.OnExiting(e))
return true;
beatmapInfoWedge.Hide();
diff --git a/osu.Game/Skinning/Editor/SkinBlueprint.cs b/osu.Game/Skinning/Editor/SkinBlueprint.cs
index 0a4bd1d75f..1860c6006c 100644
--- a/osu.Game/Skinning/Editor/SkinBlueprint.cs
+++ b/osu.Game/Skinning/Editor/SkinBlueprint.cs
@@ -146,8 +146,10 @@ namespace osu.Game.Skinning.Editor
{
anchorLine = new Box
{
- Colour = Color4.Yellow,
Height = 2,
+ Origin = Anchor.CentreLeft,
+ Colour = Color4.Yellow,
+ EdgeSmoothness = Vector2.One
},
originBox = new Box
{
diff --git a/osu.Game/Tests/Visual/EditorTestScene.cs b/osu.Game/Tests/Visual/EditorTestScene.cs
index ca12bc73fe..46f31ae53b 100644
--- a/osu.Game/Tests/Visual/EditorTestScene.cs
+++ b/osu.Game/Tests/Visual/EditorTestScene.cs
@@ -118,7 +118,7 @@ namespace osu.Game.Tests.Visual
public new bool HasUnsavedChanges => base.HasUnsavedChanges;
- public override bool OnExiting(IScreen next)
+ public override bool OnExiting(ScreenExitEvent e)
{
// For testing purposes allow the screen to exit without saving on second attempt.
if (!ExitConfirmed && dialogOverlay?.CurrentDialog is PromptForSaveDialog saveDialog)
@@ -127,7 +127,7 @@ namespace osu.Game.Tests.Visual
return true;
}
- return base.OnExiting(next);
+ return base.OnExiting(e);
}
public TestEditor(EditorLoader loader = null)
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index 0a102510e7..c57acb3b7f 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -35,7 +35,7 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/osu.iOS.props b/osu.iOS.props
index 2f0facea18..d7f89b802b 100644
--- a/osu.iOS.props
+++ b/osu.iOS.props
@@ -61,7 +61,7 @@
-
+
@@ -84,7 +84,7 @@
-
+