mirror of
https://github.com/osukey/osukey.git
synced 2025-08-06 16:13:57 +09:00
Merge pull request #14682 from peppy/fix-playlist-listing-performance
Improve multiplayer lounge listing performance
This commit is contained in:
@ -130,6 +130,8 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
Type = { Value = MatchType.HeadToHead },
|
Type = { Value = MatchType.HeadToHead },
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
AddUntilStep("wait for panel load", () => drawableRoom.ChildrenOfType<RecentParticipantsList>().Any());
|
||||||
|
|
||||||
AddAssert("password icon hidden", () => Precision.AlmostEquals(0, drawableRoom.ChildrenOfType<DrawableRoom.PasswordProtectedIcon>().Single().Alpha));
|
AddAssert("password icon hidden", () => Precision.AlmostEquals(0, drawableRoom.ChildrenOfType<DrawableRoom.PasswordProtectedIcon>().Single().Alpha));
|
||||||
|
|
||||||
AddStep("set password", () => room.Password.Value = "password");
|
AddStep("set password", () => room.Password.Value = "password");
|
||||||
|
@ -32,6 +32,12 @@ namespace osu.Game.Tests.Visual.Playlists
|
|||||||
|
|
||||||
private RoomsContainer roomsContainer => loungeScreen.ChildrenOfType<RoomsContainer>().First();
|
private RoomsContainer roomsContainer => loungeScreen.ChildrenOfType<RoomsContainer>().First();
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestManyRooms()
|
||||||
|
{
|
||||||
|
AddStep("add rooms", () => RoomManager.AddRooms(500));
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestScrollByDraggingRooms()
|
public void TestScrollByDraggingRooms()
|
||||||
{
|
{
|
||||||
|
@ -43,6 +43,8 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
private PasswordProtectedIcon passwordIcon;
|
private PasswordProtectedIcon passwordIcon;
|
||||||
private EndDateInfo endDateInfo;
|
private EndDateInfo endDateInfo;
|
||||||
|
|
||||||
|
private DelayedLoadWrapper wrapper;
|
||||||
|
|
||||||
public DrawableRoom(Room room)
|
public DrawableRoom(Room room)
|
||||||
{
|
{
|
||||||
Room = room;
|
Room = room;
|
||||||
@ -63,6 +65,14 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OverlayColourProvider colours)
|
private void load(OverlayColourProvider colours)
|
||||||
{
|
{
|
||||||
|
ButtonsContainer = new Container
|
||||||
|
{
|
||||||
|
Anchor = Anchor.CentreRight,
|
||||||
|
Origin = Anchor.CentreRight,
|
||||||
|
RelativeSizeAxes = Axes.Y,
|
||||||
|
AutoSizeAxes = Axes.X
|
||||||
|
};
|
||||||
|
|
||||||
InternalChildren = new[]
|
InternalChildren = new[]
|
||||||
{
|
{
|
||||||
// This resolves internal 1px gaps due to applying the (parenting) corner radius and masking across multiple filling background sprites.
|
// This resolves internal 1px gaps due to applying the (parenting) corner radius and masking across multiple filling background sprites.
|
||||||
@ -75,6 +85,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
{
|
{
|
||||||
d.RelativeSizeAxes = Axes.Both;
|
d.RelativeSizeAxes = Axes.Both;
|
||||||
}),
|
}),
|
||||||
|
wrapper = new DelayedLoadWrapper(() =>
|
||||||
new Container
|
new Container
|
||||||
{
|
{
|
||||||
Name = @"Room content",
|
Name = @"Room content",
|
||||||
@ -205,13 +216,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
},
|
},
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
ButtonsContainer = new Container
|
ButtonsContainer,
|
||||||
{
|
|
||||||
Anchor = Anchor.CentreRight,
|
|
||||||
Origin = Anchor.CentreRight,
|
|
||||||
RelativeSizeAxes = Axes.Y,
|
|
||||||
AutoSizeAxes = Axes.X
|
|
||||||
},
|
|
||||||
recentParticipantsList = new RecentParticipantsList
|
recentParticipantsList = new RecentParticipantsList
|
||||||
{
|
{
|
||||||
Anchor = Anchor.CentreRight,
|
Anchor = Anchor.CentreRight,
|
||||||
@ -223,7 +228,10 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
passwordIcon = new PasswordProtectedIcon { Alpha = 0 }
|
passwordIcon = new PasswordProtectedIcon { Alpha = 0 }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
}, 0)
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,6 +239,10 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
|
wrapper.DelayedLoadComplete += _ =>
|
||||||
|
{
|
||||||
|
wrapper.FadeInFromZero(200);
|
||||||
|
|
||||||
roomCategory.BindTo(Room.Category);
|
roomCategory.BindTo(Room.Category);
|
||||||
roomCategory.BindValueChanged(c =>
|
roomCategory.BindValueChanged(c =>
|
||||||
{
|
{
|
||||||
@ -248,6 +260,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
|
|
||||||
hasPassword.BindTo(Room.HasPassword);
|
hasPassword.BindTo(Room.HasPassword);
|
||||||
hasPassword.BindValueChanged(v => passwordIcon.Alpha = v.NewValue ? 1 : 0, true);
|
hasPassword.BindValueChanged(v => passwordIcon.Alpha = v.NewValue ? 1 : 0, true);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
||||||
|
@ -83,12 +83,10 @@ namespace osu.Game.Screens.OnlinePlay.Lounge
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
if (matchingFilter)
|
Alpha = matchingFilter ? 1 : 0;
|
||||||
this.FadeInFromZero(transition_duration);
|
selectionBox.Alpha = SelectedRoom.Value == Room ? 1 : 0;
|
||||||
else
|
|
||||||
Alpha = 0;
|
|
||||||
|
|
||||||
SelectedRoom.BindValueChanged(updateSelectedRoom, true);
|
SelectedRoom.BindValueChanged(updateSelectedRoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSelectedRoom(ValueChangedEvent<Room> selected)
|
private void updateSelectedRoom(ValueChangedEvent<Room> selected)
|
||||||
|
Reference in New Issue
Block a user