From 5c2c937ca185299b8593790607e814e632d4139c Mon Sep 17 00:00:00 2001
From: LA <1245661240@qq.com>
Date: Sat, 19 Jul 2025 20:47:44 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0=EF=BC=8C?=
=?UTF-8?q?=E8=B0=83=E6=95=B4=E8=B5=84=E6=BA=90=E5=B7=A5=E5=8E=82=E9=80=BB?=
=?UTF-8?q?=E8=BE=91=EF=BC=8C=E4=BC=98=E5=8C=96EzPro=E7=9A=AE=E8=82=A4?=
=?UTF-8?q?=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Directory.Build.props | 2 +-
LICENCE | 2 +-
Templates/osu.Game.Templates.csproj | 2 +-
osu.Android.props | 2 +-
osu.Android/OsuGameAndroid.cs | 48 +-
osu.Desktop.slnf | 62 +--
osu.Desktop/OsuGameDesktop.cs | 2 +-
osu.Desktop/Updater/VelopackUpdateManager.cs | 51 +-
osu.Desktop/osu.nuspec | 2 +-
.../CatchRateAdjustedDisplayDifficultyTest.cs | 7 +-
osu.Game.Rulesets.Catch/CatchRuleset.cs | 4 +-
osu.Game.Rulesets.Catch/Mods/CatchModEasy.cs | 8 +
.../Mods/CatchModHardRock.cs | 1 +
.../ManiaLegacyModConversionTest.cs | 3 +-
.../TestSceneLegacyReplayPlayback.cs | 9 +-
.../LAsEZMania/ManiaKeyCounterDisplay.cs | 2 +-
osu.Game.Rulesets.Mania/ManiaRuleset.cs | 30 +-
.../Mods/IManiaRateAdjustmentMod.cs | 18 +-
.../Mods/LAsMods/ManiaModSpaceBody.cs | 2 +-
osu.Game.Rulesets.Mania/Mods/ManiaKeyMod.cs | 2 +-
.../Mods/ManiaModClassic.cs | 32 +-
.../Mods/ManiaModDaycore.cs | 3 -
.../Mods/ManiaModDoubleTime.cs | 4 -
osu.Game.Rulesets.Mania/Mods/ManiaModEasy.cs | 22 +-
.../Mods/ManiaModHalfTime.cs | 3 -
.../Mods/ManiaModHardRock.cs | 22 +-
.../Mods/ManiaModNightcore.cs | 4 -
.../Mods/ManiaModScoreV2.cs | 37 ++
.../Scoring/ManiaHitWindows.cs | 135 ++++-
.../Skinning/EzStylePro/EzHitExplosion.cs | 109 ++--
.../Skinning/EzStylePro/EzHitTarget.cs | 19 +-
.../Skinning/EzStylePro/EzHoldNoteHead.cs | 208 ++------
.../EzStylePro/EzHoldNoteHittingLayer.cs | 104 ++--
.../Skinning/EzStylePro/EzHoldNoteMiddle.cs | 259 ++++------
.../Skinning/EzStylePro/EzHoldNoteTail.cs | 20 +-
.../Skinning/EzStylePro/EzKeyArea.cs | 21 +-
.../Skinning/EzStylePro/EzNote.cs | 173 +------
.../Skinning/EzStylePro/EzNoteBase.cs | 171 ++++++
.../Skinning/EzStylePro/EzNoteSideLine.cs | 4 +-
.../Skinning/EzStylePro/EzStageBottom.cs | 19 +-
.../ManiaEzStyleProSkinTransformer.cs | 3 +-
.../Legacy/HitTargetInsetContainer.cs | 20 +-
osu.Game.Rulesets.Mania/UI/ColumnFlow.cs | 2 +-
.../Components/HitPositionPaddedContainer.cs | 16 +-
.../OsuRateAdjustedDisplayDifficultyTest.cs | 9 +-
.../TestSceneSpinnerRotation.cs | 2 +
.../Difficulty/OsuPerformanceCalculator.cs | 2 +-
osu.Game.Rulesets.Osu/Mods/OsuModEasy.cs | 8 +
osu.Game.Rulesets.Osu/Mods/OsuModHardRock.cs | 1 +
.../Mods/OsuModStrictTracking.cs | 9 +-
osu.Game.Rulesets.Osu/OsuRuleset.cs | 4 +-
.../TaikoRateAdjustedDisplayDifficultyTest.cs | 7 +-
osu.Game.Rulesets.Taiko/Mods/TaikoModEasy.cs | 2 +
.../Mods/TaikoModHardRock.cs | 3 +
osu.Game.Rulesets.Taiko/TaikoRuleset.cs | 4 +-
.../Editing/Checks/CheckAudioQualityTest.cs | 51 +-
.../NonVisual/TestSceneUpdateManager.cs | 25 +
.../Menus/TestSceneToolbarRulesetSelector.cs | 75 +++
.../Multiplayer/TestSceneMultiplayer.cs | 112 +++-
.../TestSceneMultiplayerMatchSubScreen.cs | 8 +
.../Navigation/TestSceneScreenNavigation.cs | 2 +-
.../Online/TestSceneBeatmapSetOverlay.cs | 38 +-
.../TestScenePlaylistsResultsScreen.cs | 27 +-
.../BeatmapCarouselFilterGroupingTest.cs | 36 +-
.../SongSelectV2/SongSelectTestScene.cs | 20 +-
.../TestSceneDifficultyStatisticsDisplay.cs | 18 +
...neSongSelectCurrentSelectionInvalidated.cs | 253 +++++++++
.../TestSceneSongSelectFiltering.cs | 34 +-
.../Screens/Setup/SetupScreen.cs | 5 +-
osu.Game/Beatmaps/BeatmapManager.cs | 19 +-
.../Beatmaps/Drawables/Cards/BeatmapCard.cs | 2 +-
.../Drawables/Cards/BeatmapCardExtra.cs | 20 +
.../Drawables/Cards/BeatmapCardNano.cs | 20 +
.../Drawables/Cards/BeatmapCardNormal.cs | 20 +
.../Cards/Buttons/GoToBeatmapButton.cs | 3 +-
.../Cards/CollapsibleButtonContainer.cs | 3 +
.../Drawables/DifficultyIconTooltip.cs | 2 +-
osu.Game/Database/RealmAccess.cs | 2 -
osu.Game/Graphics/Carousel/Carousel.cs | 7 +-
.../Containers/OsuTextFlowContainer.cs | 16 +-
osu.Game/Localisation/MenuTipStrings.cs | 32 +-
osu.Game/Localisation/SongSelectStrings.cs | 29 +-
.../API/Requests/Responses/APIBeatmapSet.cs | 21 +-
.../Online/API/Requests/Responses/APIUser.cs | 3 +-
osu.Game/Online/Chat/ChannelManager.cs | 13 +-
.../Online/LocalUserStatisticsProvider.cs | 7 +-
.../Online/Metadata/OnlineMetadataClient.cs | 3 +-
osu.Game/Online/OnlineStatusNotifier.cs | 2 +-
osu.Game/Online/Rooms/MatchType.cs | 2 +-
osu.Game/OsuGame.cs | 237 +++++----
osu.Game/OsuGameBase.cs | 3 +-
osu.Game/Overlays/Changelog/ChangelogBuild.cs | 6 +-
.../Changelog/ChangelogSingleBuild.cs | 67 ++-
.../Overlays/FirstRunSetup/ScreenBehaviour.cs | 9 +-
.../Overlays/Mods/BeatmapAttributesDisplay.cs | 2 +-
.../Settings/Sections/DebugSection.cs | 12 +-
.../Sections/DebugSettings/GeneralSettings.cs | 23 +-
.../Sections/DebugSettings/MemorySettings.cs | 157 +++---
.../Overlays/Settings/Sections/SkinSection.cs | 6 +-
osu.Game/Overlays/SettingsOverlay.cs | 9 +-
.../SkinEditor/ExternalEditOverlay.cs | 27 +-
.../Overlays/SkinEditor/SkinEditorOverlay.cs | 6 +-
.../Toolbar/ToolbarRulesetSelector.cs | 21 +-
.../Rulesets/Edit/Checks/CheckAudioQuality.cs | 23 +-
.../Rulesets/Edit/Checks/CheckSongFormat.cs | 31 +-
.../Edit/Checks/Components/AudioCheckUtils.cs | 45 ++
osu.Game/Rulesets/Mods/ModEasy.cs | 10 +-
osu.Game/Rulesets/Mods/ModHardRock.cs | 1 -
osu.Game/Rulesets/Mods/ModScoreV2.cs | 2 +-
osu.Game/Rulesets/Ruleset.cs | 6 +-
osu.Game/Screens/Edit/BindableBeatDivisor.cs | 2 +-
.../Submission/SubmissionStageProgress.cs | 3 +
osu.Game/Screens/EzColumnTab.cs | 364 ++++++-------
osu.Game/Screens/EzConfig.cs | 49 ++
osu.Game/Screens/EzSkinSettingsManager.cs | 292 ++++++-----
osu.Game/Screens/EzSkinSettingsTab.cs | 325 ++++++------
osu.Game/Screens/IEzConfig.cs | 15 +
.../LAsEzExtensions/EzColumnTypeManager.cs | 44 +-
.../LAsEzExtensions/EzEditorSidebar.cs | 4 +-
.../LAsEzExtensions/EzLocalTextureFactory.cs | 486 +++++++++++++-----
.../LAsEzExtensions/EzSelectorColour.cs | 29 +-
osu.Game/Screens/Menu/MenuTipDisplay.cs | 133 +++--
osu.Game/Screens/Menu/SupporterDisplay.cs | 2 +-
.../Multiplayer/MultiplayerMatchSubScreen.cs | 53 +-
.../Spectate/MultiSpectatorScreen.cs | 3 +-
.../OnlinePlay/OnlinePlayFreestyleSelect.cs | 19 +-
.../PlaylistItemScoreResultsScreen.cs | 15 +
.../Playlists/PlaylistsRoomSubScreen.cs | 9 +-
.../Play/HUD/DrawableGameplayLeaderboard.cs | 4 +-
.../Carousel/DrawableCarouselBeatmap.cs | 2 +-
.../Screens/Select/Details/AdvancedStats.cs | 4 +-
osu.Game/Screens/Select/Filter/GroupMode.cs | 7 +-
osu.Game/Screens/Select/Filter/SortMode.cs | 13 +-
osu.Game/Screens/SelectV2/BeatmapCarousel.cs | 95 +++-
.../SelectV2/BeatmapCarouselFilterGrouping.cs | 12 +
.../SelectV2/BeatmapLeaderboardWedge.cs | 3 +-
.../BeatmapTitleWedge_DifficultyDisplay.cs | 16 +-
.../BeatmapTitleWedge_StatisticDifficulty.cs | 3 +-
.../SelectV2/PanelBeatmapStandalone.cs | 4 +-
osu.Game/Screens/SelectV2/SoloSongSelect.cs | 4 +-
osu.Game/Screens/SelectV2/SongSelect.cs | 59 ++-
.../Components/BeatmapAttributeText.cs | 5 +-
osu.Game/Skinning/EzStyleProSkin.cs | 12 +-
osu.Game/Skinning/SkinImporter.cs | 6 +-
osu.Game/Skinning/SkinManager.cs | 9 +
osu.Game/Tests/Visual/OsuGameTestScene.cs | 7 +-
osu.Game/Updater/UpdateManager.cs | 35 +-
osu.Game/osu.Game.csproj | 4 +-
osu.iOS.props | 2 +-
osu.sln | 24 +-
150 files changed, 3493 insertions(+), 2037 deletions(-)
create mode 100644 osu.Game.Rulesets.Mania/Mods/ManiaModScoreV2.cs
create mode 100644 osu.Game.Rulesets.Mania/Skinning/EzStylePro/EzNoteBase.cs
create mode 100644 osu.Game.Tests/Visual/Menus/TestSceneToolbarRulesetSelector.cs
create mode 100644 osu.Game.Tests/Visual/SongSelectV2/TestSceneSongSelectCurrentSelectionInvalidated.cs
create mode 100644 osu.Game/Screens/EzConfig.cs
create mode 100644 osu.Game/Screens/IEzConfig.cs
diff --git a/Directory.Build.props b/Directory.Build.props
index 580e61dafb..a856825d87 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -50,7 +50,7 @@
https://github.com/ppy/osu
Automated release.
ppy Pty Ltd
- Copyright (c) 2024 ppy Pty Ltd
+ Copyright (c) 2025 ppy Pty Ltd
osu game
diff --git a/LICENCE b/LICENCE
index 3bb8b62d5d..9ffcc70c13 100644
--- a/LICENCE
+++ b/LICENCE
@@ -1,4 +1,4 @@
-Copyright (c) 2024 ppy Pty Ltd .
+Copyright (c) 2025 ppy Pty Ltd .
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/Templates/osu.Game.Templates.csproj b/Templates/osu.Game.Templates.csproj
index 186a6093f5..ecac2e4794 100644
--- a/Templates/osu.Game.Templates.csproj
+++ b/Templates/osu.Game.Templates.csproj
@@ -8,7 +8,7 @@
https://github.com/ppy/osu/blob/master/Templates
https://github.com/ppy/osu
Automated release.
- Copyright (c) 2024 ppy Pty Ltd
+ Copyright (c) 2025 ppy Pty Ltd
Templates to use when creating a ruleset for consumption in osu!.
dotnet-new;templates;osu
netstandard2.1
diff --git a/osu.Android.props b/osu.Android.props
index de3fe31ee6..0509d86b0a 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -10,7 +10,7 @@
true
-
+
@@ -48,13 +47,14 @@
-
+
+
diff --git a/osu.iOS.props b/osu.iOS.props
index bb5e3da49e..99eed6c204 100644
--- a/osu.iOS.props
+++ b/osu.iOS.props
@@ -17,6 +17,6 @@
-all
-
+
diff --git a/osu.sln b/osu.sln
index 3878444d1c..f5f1560598 100644
--- a/osu.sln
+++ b/osu.sln
@@ -105,10 +105,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework", "..\osu-fra
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework.NativeLibs", "..\osu-framework\osu.Framework.NativeLibs\osu.Framework.NativeLibs.csproj", "{F5037F74-E137-4940-8CE7-4D3E5DF0FB39}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework.Android", "..\osu-framework\osu.Framework.Android\osu.Framework.Android.csproj", "{5ABDA3A9-BDAD-48A2-945E-EF78228FD5FC}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Framework.iOS", "..\osu-framework\osu.Framework.iOS\osu.Framework.iOS.csproj", "{335CB301-EB9C-4108-A353-CD68AFA200AA}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -160,13 +156,13 @@ Global
{6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A2D5D58-0261-4A75-BE84-2BE8B076B7C2}.Release|Any CPU.Build.0 = Release|Any CPU
{5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5672CA4D-1B37-425B-A118-A8DA26E78938}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5672CA4D-1B37-425B-A118-A8DA26E78938}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5789E78D-38F9-4072-AB7B-978F34B2C17F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5789E78D-38F9-4072-AB7B-978F34B2C17F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Release|Any CPU.Build.0 = Release|Any CPU
{3F082D0B-A964-43D7-BDF7-C256D76A50D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -232,35 +228,27 @@ Global
{93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93632F2D-2BB4-46C1-A7B8-F8CF2FB27118}.Release|Any CPU.Build.0 = Release|Any CPU
{9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9014CA66-5217-49F6-8C1E-3430FD08EF61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9014CA66-5217-49F6-8C1E-3430FD08EF61}.Release|Any CPU.Build.0 = Release|Any CPU
{561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {561DFD5E-5896-40D1-9708-4D692F5BAE66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{561DFD5E-5896-40D1-9708-4D692F5BAE66}.Release|Any CPU.Build.0 = Release|Any CPU
{B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B325271C-85E7-4DB3-8BBB-B70F242954F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B325271C-85E7-4DB3-8BBB-B70F242954F8}.Release|Any CPU.Build.0 = Release|Any CPU
{4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C834F7F-07CA-46C7-8C7B-F10A1B3BC738}.Release|Any CPU.Build.0 = Release|Any CPU
{AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AD923016-F318-49B7-B08B-89DED6DC2422}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD923016-F318-49B7-B08B-89DED6DC2422}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD923016-F318-49B7-B08B-89DED6DC2422}.Release|Any CPU.Build.0 = Release|Any CPU
{B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B9B92246-02EB-4118-9C6F-85A0D726AA70}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9B92246-02EB-4118-9C6F-85A0D726AA70}.Release|Any CPU.Build.0 = Release|Any CPU
{B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B9022390-8184-4548-9DB1-50EB8878D20A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9022390-8184-4548-9DB1-50EB8878D20A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9022390-8184-4548-9DB1-50EB8878D20A}.Release|Any CPU.Build.0 = Release|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1743BF7C-E6AE-4A06-BAD9-166D62894303}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1743BF7C-E6AE-4A06-BAD9-166D62894303}.Release|Any CPU.Build.0 = Release|Any CPU
{18ED4ABC-6064-46F1-9A05-4E0BE88A635A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -275,14 +263,6 @@ Global
{F5037F74-E137-4940-8CE7-4D3E5DF0FB39}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F5037F74-E137-4940-8CE7-4D3E5DF0FB39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5037F74-E137-4940-8CE7-4D3E5DF0FB39}.Release|Any CPU.Build.0 = Release|Any CPU
- {5ABDA3A9-BDAD-48A2-945E-EF78228FD5FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5ABDA3A9-BDAD-48A2-945E-EF78228FD5FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5ABDA3A9-BDAD-48A2-945E-EF78228FD5FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5ABDA3A9-BDAD-48A2-945E-EF78228FD5FC}.Release|Any CPU.Build.0 = Release|Any CPU
- {335CB301-EB9C-4108-A353-CD68AFA200AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {335CB301-EB9C-4108-A353-CD68AFA200AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {335CB301-EB9C-4108-A353-CD68AFA200AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {335CB301-EB9C-4108-A353-CD68AFA200AA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE