(m8H|1Y2uk#}w?#@X%jVZbmG~OqNBQczW(LhxVDCEH_Sy8%q*OWMFM*-j#z-ne7*&+v^Y4qCU>vE~1U+Cj8>p
zK@DI1*<_*DOf08CSl|i6XLc{UW@t3S;cRVgjw`)rm5l64-gDD7XX6anlIr$kU9#wH
zD?d}O!oQ1ie5j~j;}}F|OYXYS=B!a;b|dN!NW`TOWej@xbYOo7TIWncLKvySwlyq%
zVBY%F=34jptzzk+sf`DYab1Y@bE}`ExMss;!UKh%VB1ok%?9>=wtFcL0D=GxLeG-O
znj|u5+vrFNhp0{A5V_AUjNa8#me_>+p0{_DfU@FanV634O-+nT+~e0PAv}8VN`1V%
zmDmM4aB>l1Rmr+x8B{LvMm*Pko*5R>VxnB8#K6a7JdAZ%h^h0C4~Z1OnE?%+A4COOx=`9_jzHM_%p{UcT<0?h9C3
zr-kpFuHi27Buhh8zn4QHksJsKo*4{*o@_)ZDG4_5OuJ74ZJ#VPkJz~7!^mr@Q&Tg_
zlCa6VnJaltsZ|{1se9g>e6x4)P$39EzuM)D-&)2~SmW%})Rq+d>x=GmqZ#9z6zXI7
zY)w6;k{Dg3@8HPuC#op5BdQJh2F$w7K{maV&SvQMYt-kxI9A5UV!Wt=(W@Cs*yl~d
zy@M@ny)Rfz=DCxn54MfXjU04>f9S7ECT;}CWtz7}n+SNBnaVwQ(j&b05qocf$2
zp{M6j@G*<*QpL@qdK1krr}TXT5>9K$p9`FBtvwSEmGaQSzvS6yp-VwAvF0yI7%IqY
zq9I^=3ZLh*n^PA60HS{{E{W_D^i6Qs#?%s~6YKcU9{04%uHCl77Tbr_u<7aPKcbD)
z*45D|#jzl2A(}Q=jdm@b0^zQX?hdVkFz9FA?&ctuw>x4`xo`g;
zeZP#o+xA?N?ubFX1i-)K>h2ue1G3ve+yk;B26Y|^zWJPd8FlyEx$fH$gDS`e{*4!R
oC*ZEn?vZfUXGaVwo&T@0zj>K(7(RaP=X`(i_@%
literal 0
HcmV?d00001
diff --git a/osu.Game.Tests/Skins/SkinDeserialisationTest.cs b/osu.Game.Tests/Skins/SkinDeserialisationTest.cs
index 6423e061c5..d979bdab93 100644
--- a/osu.Game.Tests/Skins/SkinDeserialisationTest.cs
+++ b/osu.Game.Tests/Skins/SkinDeserialisationTest.cs
@@ -60,6 +60,8 @@ namespace osu.Game.Tests.Skins
"Archives/modified-argon-20231106.osk",
// Covers "Argon" accuracy/score/combo counters, and wedges
"Archives/modified-argon-20231108.osk",
+ // Covers "Argon" performance points counter
+ "Archives/modified-argon-20240305.osk",
};
///
From 49b3e81e8aa2f9ba438d3218d06a9e167fd30191 Mon Sep 17 00:00:00 2001
From: Salman Ahmed
Date: Tue, 5 Mar 2024 04:34:41 +0300
Subject: [PATCH 300/508] Migrate `DefaultPerformancePointsCounter` and rename
it
---
.../Visual/Gameplay/TestScenePerformancePointsCounter.cs | 3 ++-
osu.Game/Screens/Play/HUD/PerformancePointsCounter.cs | 2 +-
osu.Game/Skinning/Skin.cs | 1 +
.../Triangles/TrianglesPerformancePointsCounter.cs} | 5 +++--
osu.Game/Skinning/TrianglesSkin.cs | 3 ++-
5 files changed, 9 insertions(+), 5 deletions(-)
rename osu.Game/{Screens/Play/HUD/DefaultPerformancePointsCounter.cs => Skinning/Triangles/TrianglesPerformancePointsCounter.cs} (94%)
diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePerformancePointsCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePerformancePointsCounter.cs
index 986167279c..eada72326d 100644
--- a/osu.Game.Tests/Visual/Gameplay/TestScenePerformancePointsCounter.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestScenePerformancePointsCounter.cs
@@ -18,6 +18,7 @@ using osu.Game.Rulesets.Osu.Scoring;
using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Play;
using osu.Game.Screens.Play.HUD;
+using osu.Game.Skinning.Triangles;
using osu.Game.Tests.Gameplay;
namespace osu.Game.Tests.Visual.Gameplay
@@ -32,7 +33,7 @@ namespace osu.Game.Tests.Visual.Gameplay
private int iteration;
- protected override Drawable CreateDefaultImplementation() => new DefaultPerformancePointsCounter();
+ protected override Drawable CreateDefaultImplementation() => new TrianglesPerformancePointsCounter();
protected override Drawable CreateArgonImplementation() => new ArgonPerformancePointsCounter();
protected override Drawable CreateLegacyImplementation() => Empty();
diff --git a/osu.Game/Screens/Play/HUD/PerformancePointsCounter.cs b/osu.Game/Screens/Play/HUD/PerformancePointsCounter.cs
index 4b07e7da36..c5ad106bcc 100644
--- a/osu.Game/Screens/Play/HUD/PerformancePointsCounter.cs
+++ b/osu.Game/Screens/Play/HUD/PerformancePointsCounter.cs
@@ -27,7 +27,7 @@ using osu.Game.Skinning;
namespace osu.Game.Screens.Play.HUD
{
- public partial class PerformancePointsCounter : RollingCounter, ISerialisableDrawable
+ public abstract partial class PerformancePointsCounter : RollingCounter, ISerialisableDrawable
{
public bool UsesFixedAnchor { get; set; }
diff --git a/osu.Game/Skinning/Skin.cs b/osu.Game/Skinning/Skin.cs
index 9ee69d033d..91b21f0308 100644
--- a/osu.Game/Skinning/Skin.cs
+++ b/osu.Game/Skinning/Skin.cs
@@ -153,6 +153,7 @@ namespace osu.Game.Skinning
// handle namespace changes...
jsonContent = jsonContent.Replace(@"osu.Game.Screens.Play.SongProgress", @"osu.Game.Screens.Play.HUD.DefaultSongProgress");
jsonContent = jsonContent.Replace(@"osu.Game.Screens.Play.HUD.LegacyComboCounter", @"osu.Game.Skinning.LegacyComboCounter");
+ jsonContent = jsonContent.Replace(@"osu.Game.Screens.Play.HUD.PerformancePointsCounter", @"osu.Game.Skinning.Triangles.TrianglesPerformancePointsCounter");
var deserializedContent = JsonConvert.DeserializeObject>(jsonContent);
diff --git a/osu.Game/Screens/Play/HUD/DefaultPerformancePointsCounter.cs b/osu.Game/Skinning/Triangles/TrianglesPerformancePointsCounter.cs
similarity index 94%
rename from osu.Game/Screens/Play/HUD/DefaultPerformancePointsCounter.cs
rename to osu.Game/Skinning/Triangles/TrianglesPerformancePointsCounter.cs
index 3c4e58e575..99da2c0942 100644
--- a/osu.Game/Screens/Play/HUD/DefaultPerformancePointsCounter.cs
+++ b/osu.Game/Skinning/Triangles/TrianglesPerformancePointsCounter.cs
@@ -11,11 +11,12 @@ using osu.Framework.Localisation;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Resources.Localisation.Web;
+using osu.Game.Screens.Play.HUD;
using osuTK;
-namespace osu.Game.Screens.Play.HUD
+namespace osu.Game.Skinning.Triangles
{
- public partial class DefaultPerformancePointsCounter : PerformancePointsCounter
+ public partial class TrianglesPerformancePointsCounter : PerformancePointsCounter
{
protected override bool IsRollingProportional => true;
diff --git a/osu.Game/Skinning/TrianglesSkin.cs b/osu.Game/Skinning/TrianglesSkin.cs
index a2dca5d333..6158d4c7bf 100644
--- a/osu.Game/Skinning/TrianglesSkin.cs
+++ b/osu.Game/Skinning/TrianglesSkin.cs
@@ -14,6 +14,7 @@ using osu.Game.Extensions;
using osu.Game.IO;
using osu.Game.Screens.Play.HUD;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
+using osu.Game.Skinning.Triangles;
using osuTK;
using osuTK.Graphics;
@@ -167,7 +168,7 @@ namespace osu.Game.Skinning
new DefaultKeyCounterDisplay(),
new BarHitErrorMeter(),
new BarHitErrorMeter(),
- new PerformancePointsCounter()
+ new TrianglesPerformancePointsCounter()
}
};
From cceb616a18cc862f975da533bed42b49a89d2fa9 Mon Sep 17 00:00:00 2001
From: Jayden
Date: Mon, 4 Mar 2024 22:25:36 -0500
Subject: [PATCH 301/508] Update failure messages
Co-authored-by: Salman Ahmed
---
osu.Desktop/DiscordRichPresence.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs
index 035add8044..85b6129043 100644
--- a/osu.Desktop/DiscordRichPresence.cs
+++ b/osu.Desktop/DiscordRichPresence.cs
@@ -184,14 +184,14 @@ namespace osu.Desktop
game.Window?.Raise();
if (!tryParseRoomSecret(args.Secret, out long roomId, out string? password))
- Logger.Log("Failed to parse the room secret Discord gave us", LoggingTarget.Network, LogLevel.Error);
+ Logger.Log("Could not parse room from Discord RPC Client", LoggingTarget.Network, LogLevel.Important);
var request = new GetRoomRequest(roomId);
request.Success += room => Schedule(() =>
{
game.PresentMultiplayerMatch(room, password);
});
- request.Failure += _ => Logger.Log("Couldn't find the room Discord gave us", LoggingTarget.Network, LogLevel.Error);
+ request.Failure += _ => Logger.Log($"Could not find room {roomId} from Discord RPC Client", LoggingTarget.Network, LogLevel.Important);
api.Queue(request);
}
From 43841e210d2a1915d3c39bfe191ef62befbd3492 Mon Sep 17 00:00:00 2001
From: Berkan Diler
Date: Tue, 5 Mar 2024 09:58:46 +0100
Subject: [PATCH 302/508] Use ObjectDisposedException.ThrowIf throw helper
---
osu.Game/Database/RealmAccess.cs | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/osu.Game/Database/RealmAccess.cs b/osu.Game/Database/RealmAccess.cs
index 4bd7f36cdd..167d170c81 100644
--- a/osu.Game/Database/RealmAccess.cs
+++ b/osu.Game/Database/RealmAccess.cs
@@ -489,8 +489,7 @@ namespace osu.Game.Database
/// The work to run.
public Task WriteAsync(Action action)
{
- if (isDisposed)
- throw new ObjectDisposedException(nameof(RealmAccess));
+ ObjectDisposedException.ThrowIf(isDisposed, this);
// Required to ensure the write is tracked and accounted for before disposal.
// Can potentially be avoided if we have a need to do so in the future.
@@ -675,8 +674,7 @@ namespace osu.Game.Database
private Realm getRealmInstance()
{
- if (isDisposed)
- throw new ObjectDisposedException(nameof(RealmAccess));
+ ObjectDisposedException.ThrowIf(isDisposed, this);
bool tookSemaphoreLock = false;
@@ -1189,8 +1187,7 @@ namespace osu.Game.Database
if (!ThreadSafety.IsUpdateThread)
throw new InvalidOperationException(@$"{nameof(BlockAllOperations)} must be called from the update thread.");
- if (isDisposed)
- throw new ObjectDisposedException(nameof(RealmAccess));
+ ObjectDisposedException.ThrowIf(isDisposed, this);
SynchronizationContext? syncContext = null;
From 9bac60a98fc098cb4c6b1f118e61c5255bd5b235 Mon Sep 17 00:00:00 2001
From: Berkan Diler
Date: Tue, 5 Mar 2024 10:19:47 +0100
Subject: [PATCH 303/508] Use ArgumentNullException.ThrowIfNull in more places
---
osu.Game/Rulesets/UI/DrawableRuleset.cs | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs
index 13e28279e6..bdc0ff85ba 100644
--- a/osu.Game/Rulesets/UI/DrawableRuleset.cs
+++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs
@@ -135,8 +135,7 @@ namespace osu.Game.Rulesets.UI
protected DrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList mods = null)
: base(ruleset)
{
- if (beatmap == null)
- throw new ArgumentNullException(nameof(beatmap), "Beatmap cannot be null.");
+ ArgumentNullException.ThrowIfNull(beatmap);
if (!(beatmap is Beatmap tBeatmap))
throw new ArgumentException($"{GetType()} expected the beatmap to contain hitobjects of type {typeof(TObject)}.", nameof(beatmap));
From a89130348469e1b1ea8e025bb2c6cf4a85da51b3 Mon Sep 17 00:00:00 2001
From: Berkan Diler