mirror of
https://github.com/ppy/osu
synced 2025-01-10 16:19:47 +00:00
Merge remote-tracking branch 'refs/remotes/ppy/master' into no-comments-placeholder
This commit is contained in:
commit
91f7bc6d45
@ -3,12 +3,15 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Chat;
|
using osu.Game.Overlays.Chat;
|
||||||
@ -35,8 +38,9 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
private TestChatOverlay chatOverlay;
|
private TestChatOverlay chatOverlay;
|
||||||
private ChannelManager channelManager;
|
private ChannelManager channelManager;
|
||||||
|
|
||||||
private readonly Channel channel1 = new Channel(new User()) { Name = "test really long username" };
|
private readonly Channel channel1 = new Channel(new User()) { Name = "test really long username", Topic = "Topic for channel 1" };
|
||||||
private readonly Channel channel2 = new Channel(new User()) { Name = "test2" };
|
private readonly Channel channel2 = new Channel(new User()) { Name = "test2", Topic = "Topic for channel 2" };
|
||||||
|
private readonly Channel channel3 = new Channel(new User()) { Name = "channel with no topic" };
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
@ -45,7 +49,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
ChannelManagerContainer container;
|
ChannelManagerContainer container;
|
||||||
|
|
||||||
Child = container = new ChannelManagerContainer(new List<Channel> { channel1, channel2 })
|
Child = container = new ChannelManagerContainer(new List<Channel> { channel1, channel2, channel3 })
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
};
|
};
|
||||||
@ -96,6 +100,17 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
AddAssert("Selector is visible", () => chatOverlay.SelectionOverlayState == Visibility.Visible);
|
AddAssert("Selector is visible", () => chatOverlay.SelectionOverlayState == Visibility.Visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestSearchInSelector()
|
||||||
|
{
|
||||||
|
AddStep("search for 'test2'", () => chatOverlay.ChildrenOfType<SearchTextBox>().First().Text = "test2");
|
||||||
|
AddUntilStep("only channel 2 visible", () =>
|
||||||
|
{
|
||||||
|
var listItems = chatOverlay.ChildrenOfType<ChannelListItem>().Where(c => c.IsPresent);
|
||||||
|
return listItems.Count() == 1 && listItems.Single().Channel == channel2;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void clickDrawable(Drawable d)
|
private void clickDrawable(Drawable d)
|
||||||
{
|
{
|
||||||
InputManager.MoveMouseTo(d);
|
InputManager.MoveMouseTo(d);
|
||||||
|
@ -25,7 +25,7 @@ namespace osu.Game.Overlays.Chat.Selection
|
|||||||
private const float text_size = 15;
|
private const float text_size = 15;
|
||||||
private const float transition_duration = 100;
|
private const float transition_duration = 100;
|
||||||
|
|
||||||
private readonly Channel channel;
|
public readonly Channel Channel;
|
||||||
|
|
||||||
private readonly Bindable<bool> joinedBind = new Bindable<bool>();
|
private readonly Bindable<bool> joinedBind = new Bindable<bool>();
|
||||||
private readonly OsuSpriteText name;
|
private readonly OsuSpriteText name;
|
||||||
@ -36,7 +36,7 @@ namespace osu.Game.Overlays.Chat.Selection
|
|||||||
private Color4 topicColour;
|
private Color4 topicColour;
|
||||||
private Color4 hoverColour;
|
private Color4 hoverColour;
|
||||||
|
|
||||||
public IEnumerable<string> FilterTerms => new[] { channel.Name, channel.Topic };
|
public IEnumerable<string> FilterTerms => new[] { Channel.Name, Channel.Topic ?? string.Empty };
|
||||||
|
|
||||||
public bool MatchingFilter
|
public bool MatchingFilter
|
||||||
{
|
{
|
||||||
@ -50,7 +50,7 @@ namespace osu.Game.Overlays.Chat.Selection
|
|||||||
|
|
||||||
public ChannelListItem(Channel channel)
|
public ChannelListItem(Channel channel)
|
||||||
{
|
{
|
||||||
this.channel = channel;
|
Channel = channel;
|
||||||
|
|
||||||
RelativeSizeAxes = Axes.X;
|
RelativeSizeAxes = Axes.X;
|
||||||
AutoSizeAxes = Axes.Y;
|
AutoSizeAxes = Axes.Y;
|
||||||
@ -148,7 +148,7 @@ namespace osu.Game.Overlays.Chat.Selection
|
|||||||
hoverColour = colours.Yellow;
|
hoverColour = colours.Yellow;
|
||||||
|
|
||||||
joinedBind.ValueChanged += joined => updateColour(joined.NewValue);
|
joinedBind.ValueChanged += joined => updateColour(joined.NewValue);
|
||||||
joinedBind.BindTo(channel.Joined);
|
joinedBind.BindTo(Channel.Joined);
|
||||||
|
|
||||||
joinedBind.TriggerChange();
|
joinedBind.TriggerChange();
|
||||||
FinishTransforms(true);
|
FinishTransforms(true);
|
||||||
@ -156,7 +156,7 @@ namespace osu.Game.Overlays.Chat.Selection
|
|||||||
|
|
||||||
protected override bool OnHover(HoverEvent e)
|
protected override bool OnHover(HoverEvent e)
|
||||||
{
|
{
|
||||||
if (!channel.Joined.Value)
|
if (!Channel.Joined.Value)
|
||||||
name.FadeColour(hoverColour, 50, Easing.OutQuint);
|
name.FadeColour(hoverColour, 50, Easing.OutQuint);
|
||||||
|
|
||||||
return base.OnHover(e);
|
return base.OnHover(e);
|
||||||
@ -164,7 +164,7 @@ namespace osu.Game.Overlays.Chat.Selection
|
|||||||
|
|
||||||
protected override void OnHoverLost(HoverLostEvent e)
|
protected override void OnHoverLost(HoverLostEvent e)
|
||||||
{
|
{
|
||||||
if (!channel.Joined.Value)
|
if (!Channel.Joined.Value)
|
||||||
name.FadeColour(Color4.White, transition_duration);
|
name.FadeColour(Color4.White, transition_duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,9 +220,11 @@ namespace osu.Game.Scoring.Legacy
|
|||||||
float lastTime = 0;
|
float lastTime = 0;
|
||||||
ReplayFrame currentFrame = null;
|
ReplayFrame currentFrame = null;
|
||||||
|
|
||||||
foreach (var l in reader.ReadToEnd().Split(','))
|
var frames = reader.ReadToEnd().Split(',');
|
||||||
|
|
||||||
|
for (var i = 0; i < frames.Length; i++)
|
||||||
{
|
{
|
||||||
var split = l.Split('|');
|
var split = frames[i].Split('|');
|
||||||
|
|
||||||
if (split.Length < 4)
|
if (split.Length < 4)
|
||||||
continue;
|
continue;
|
||||||
@ -234,8 +236,14 @@ namespace osu.Game.Scoring.Legacy
|
|||||||
}
|
}
|
||||||
|
|
||||||
var diff = Parsing.ParseFloat(split[0]);
|
var diff = Parsing.ParseFloat(split[0]);
|
||||||
|
|
||||||
lastTime += diff;
|
lastTime += diff;
|
||||||
|
|
||||||
|
if (i == 0 && diff == 0)
|
||||||
|
// osu-stable adds a zero-time frame before potentially valid negative user frames.
|
||||||
|
// we need to ignore this.
|
||||||
|
continue;
|
||||||
|
|
||||||
// Todo: At some point we probably want to rewind and play back the negative-time frames
|
// Todo: At some point we probably want to rewind and play back the negative-time frames
|
||||||
// but for now we'll achieve equal playback to stable by skipping negative frames
|
// but for now we'll achieve equal playback to stable by skipping negative frames
|
||||||
if (diff < 0)
|
if (diff < 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user