1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 05:22:54 +08:00

color friend score to pink

This commit is contained in:
cdwcgt 2023-09-06 22:49:13 +09:00
parent eddb879973
commit 68752f95e5
No known key found for this signature in database
GPG Key ID: 144396D01095C3A2
2 changed files with 45 additions and 1 deletions

View File

@ -6,11 +6,14 @@
using System.Linq;
using NUnit.Framework;
using osu.Framework.Bindables;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Extensions.PolygonExtensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Testing;
using osu.Framework.Utils;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Screens.Play.HUD;
using osuTK;
@ -139,6 +142,29 @@ namespace osu.Game.Tests.Visual.Gameplay
=> AddAssert($"leaderboard height is {panelCount} panels high", () => leaderboard.DrawHeight == (GameplayLeaderboardScore.PANEL_HEIGHT + leaderboard.Spacing) * panelCount);
}
[Test]
public void TestFriendScore()
{
APIUser friend = new APIUser { Username = "my friend", Id = 10000 };
createLeaderboard();
addLocalPlayer();
AddStep("initialize api", () =>
{
var api = (DummyAPIAccess)API;
api.Friends.Add(friend);
});
int playerNumber = 1;
AddRepeatStep("add 3 other players", () => createRandomScore(new APIUser { Username = $"Player {playerNumber++}" }), 3);
AddUntilStep("there are no pink color score", () => leaderboard.ChildrenOfType<Box>().All(b => b.Colour != Color4Extensions.FromHex("ff549a")));
AddRepeatStep("add 3 friend score", () => createRandomScore(friend), 3);
AddUntilStep("there are pink color for friend score", () => leaderboard.GetScoreByUsername("my friend").ChildrenOfType<Box>().Any(b => b.Colour == Color4Extensions.FromHex("ff549a")));
}
private void addLocalPlayer()
{
AddStep("add local player", () =>
@ -179,6 +205,11 @@ namespace osu.Game.Tests.Visual.Gameplay
return scoreItem != null && scoreItem.ScorePosition == expectedPosition;
}
public GameplayLeaderboardScore GetScoreByUsername(string username)
{
return Flow.FirstOrDefault(i => i.User?.Username == username);
}
}
}
}

View File

@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using System;
using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Extensions.Color4Extensions;
@ -11,6 +12,8 @@ using osu.Framework.Graphics.Shapes;
using osu.Game.Configuration;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Rulesets.Scoring;
using osu.Game.Users;
using osu.Game.Users.Drawables;
@ -107,6 +110,8 @@ namespace osu.Game.Screens.Play.HUD
private IBindable<ScoringMode> scoreDisplayMode = null!;
private readonly IBindableList<APIUser> apiFriends = new BindableList<APIUser>();
/// <summary>
/// Creates a new <see cref="GameplayLeaderboardScore"/>.
/// </summary>
@ -124,7 +129,7 @@ namespace osu.Game.Screens.Play.HUD
}
[BackgroundDependencyLoader]
private void load(OsuColour colours, OsuConfigManager osuConfigManager)
private void load(OsuColour colours, OsuConfigManager osuConfigManager, IAPIProvider api)
{
Container avatarContainer;
@ -311,6 +316,9 @@ namespace osu.Game.Screens.Play.HUD
}, true);
HasQuit.BindValueChanged(_ => updateState());
apiFriends.BindTo(api.Friends);
apiFriends.BindCollectionChanged((_, _) => updateState());
}
protected override void LoadComplete()
@ -389,6 +397,11 @@ namespace osu.Game.Screens.Play.HUD
panelColour = BackgroundColour ?? Color4Extensions.FromHex("ffd966");
textColour = TextColour ?? Color4Extensions.FromHex("2e576b");
}
else if (apiFriends.Any(f => User?.Equals(f) == true))
{
panelColour = BackgroundColour ?? Color4Extensions.FromHex("ff549a");
textColour = TextColour ?? Color4.White;
}
else
{
panelColour = BackgroundColour ?? Color4Extensions.FromHex("3399cc");