1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 04:12:57 +08:00

Merge branch 'master' into fix-judgement-animation-conditional

This commit is contained in:
Bartłomiej Dach 2021-01-15 22:10:17 +01:00
commit d9b671667b
7 changed files with 25 additions and 11 deletions

View File

@ -1,9 +1,11 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // 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. // See the LICENCE file in the repository root for full licence text.
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NUnit.Framework; using NUnit.Framework;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Game.Audio;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints; using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Mods;
@ -34,7 +36,7 @@ namespace osu.Game.Rulesets.Osu.Tests
[TestCase(true)] [TestCase(true)]
public void TestLongSpinner(bool autoplay) public void TestLongSpinner(bool autoplay)
{ {
AddStep("Very short spinner", () => SetContents(() => testSingle(5, autoplay, 2000))); AddStep("Very long spinner", () => SetContents(() => testSingle(5, autoplay, 4000)));
AddUntilStep("Wait for completion", () => drawableSpinner.Result.HasResult); AddUntilStep("Wait for completion", () => drawableSpinner.Result.HasResult);
AddUntilStep("Check correct progress", () => drawableSpinner.Progress == (autoplay ? 1 : 0)); AddUntilStep("Check correct progress", () => drawableSpinner.Progress == (autoplay ? 1 : 0));
} }
@ -55,7 +57,11 @@ namespace osu.Game.Rulesets.Osu.Tests
var spinner = new Spinner var spinner = new Spinner
{ {
StartTime = Time.Current + delay, StartTime = Time.Current + delay,
EndTime = Time.Current + delay + length EndTime = Time.Current + delay + length,
Samples = new List<HitSampleInfo>
{
new HitSampleInfo("hitnormal")
}
}; };
spinner.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty { CircleSize = circleSize }); spinner.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty { CircleSize = circleSize });

View File

@ -52,6 +52,7 @@ namespace osu.Game.Online.Multiplayer
/// <summary> /// <summary>
/// Whether the <see cref="StatefulMultiplayerClient"/> is currently connected. /// Whether the <see cref="StatefulMultiplayerClient"/> is currently connected.
/// This is NOT thread safe and usage should be scheduled.
/// </summary> /// </summary>
public abstract IBindable<bool> IsConnected { get; } public abstract IBindable<bool> IsConnected { get; }

View File

@ -138,6 +138,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
scrollToTrackTime(); scrollToTrackTime();
} }
protected override bool OnScroll(ScrollEvent e)
{
// if this is not a precision scroll event, let the editor handle the seek itself (for snapping support)
if (!e.AltPressed && !e.IsPrecise)
return false;
return base.OnScroll(e);
}
protected override void UpdateAfterChildren() protected override void UpdateAfterChildren()
{ {
base.UpdateAfterChildren(); base.UpdateAfterChildren();

View File

@ -34,8 +34,8 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
{ {
base.LoadComplete(); base.LoadComplete();
isConnected.BindValueChanged(_ => updateState()); isConnected.BindValueChanged(_ => Scheduler.AddOnce(updateState));
operationInProgress.BindValueChanged(_ => updateState(), true); operationInProgress.BindValueChanged(_ => Scheduler.AddOnce(updateState), true);
} }
private void updateState() => Enabled.Value = isConnected.Value && !operationInProgress.Value; private void updateState() => Enabled.Value = isConnected.Value && !operationInProgress.Value;

View File

@ -77,14 +77,14 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
}); });
isConnected = client.IsConnected.GetBoundCopy(); isConnected = client.IsConnected.GetBoundCopy();
isConnected.BindValueChanged(connected => isConnected.BindValueChanged(connected => Schedule(() =>
{ {
if (!connected.NewValue) if (!connected.NewValue)
{ {
// messaging to the user about this disconnect will be provided by the MultiplayerMatchSubScreen. // messaging to the user about this disconnect will be provided by the MultiplayerMatchSubScreen.
failAndBail(); failAndBail();
} }
}, true); }), true);
Debug.Assert(client.Room != null); Debug.Assert(client.Room != null);
} }

View File

@ -34,10 +34,8 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
base.LoadComplete(); base.LoadComplete();
isConnected.BindTo(multiplayerClient.IsConnected); isConnected.BindTo(multiplayerClient.IsConnected);
isConnected.BindValueChanged(_ => Schedule(updatePolling)); isConnected.BindValueChanged(_ => Scheduler.AddOnce(updatePolling));
JoinedRoom.BindValueChanged(_ => updatePolling()); JoinedRoom.BindValueChanged(_ => Scheduler.AddOnce(updatePolling), true);
updatePolling();
} }
public override void CreateRoom(Room room, Action<Room> onSuccess = null, Action<string> onError = null) public override void CreateRoom(Room room, Action<Room> onSuccess = null, Action<string> onError = null)

View File

@ -500,7 +500,7 @@ namespace osu.Game.Screens.Select
if (beatmap != null) if (beatmap != null)
{ {
if (beatmap.BeatmapSetInfoID == beatmapNoDebounce?.BeatmapSetInfoID) if (beatmap.BeatmapSetInfoID == previous?.BeatmapInfo.BeatmapSetInfoID)
sampleChangeDifficulty.Play(); sampleChangeDifficulty.Play();
else else
sampleChangeBeatmap.Play(); sampleChangeBeatmap.Play();