Fixes friend list not showing global rank of the users.
I think #37709 can be closed without any further client-side changes
after `osu-web` is made to return global rank on user searches.
The delayed collection evaluation (making it async) is the main fix, but
the debounce seems like good to have from a sanity angle. Alternative
would be `Scheduler.AddOnce` to avoid multiple input events per frame
being handled.
Closes https://github.com/ppy/osu/issues/37615.
the x axis division was set to a fixed number of steps rather than
picking a neat step size, which created uneven numbers. this pr changes
this so an appropriate factor is determined, the x-axis min/max is
floor'd/ceil'd to that factor and the divisions are created based on
that factor. the cumulative rating line also extends to the new end of
the graph.
in addition, the bars of the bar chart are now aligned using the left
edge of the bar rather than the center. in the after-image, note how the
left edge of the bar for 1600 rating aligns with the division. (this is
based on the assumption that a rating bucket, say "1500", spans the
interval [1500, 1600]. if the bucket spans [1450, 1550] instead, i will
revert the change)
before
<img width="632" height="217" alt="image"
src="https://github.com/user-attachments/assets/b7053d43-99bb-4e5b-87a4-dcec37d56b50"
/>
after
<img width="608" height="230" alt="image"
src="https://github.com/user-attachments/assets/3f9e4284-f1b1-4bcb-8f70-f75f4e242b19"
/>
could optimize the while loop into a single mathematical expression, but
this is easier to read imo. lmk if you'd prefer the expression instead
As far as I can tell this matches stable expectations. As with most
things editor, it doesn't make sense to skin a beatmap and then want to
edit the beatmap without that skin applied, ever.
---
As mentioned in https://github.com/ppy/osu/discussions/37607.
Could probably be implemented in five different ways, this is just the
simplest that came to me. Well aware this is adding even more faff on
top of the config/disable/toggles for this stuff, but feels required for
editor sanity.
---------
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
Matches stable and significantly improves UX when mapping. In addition,
current behavior makes it too easy to place stacked objects which is
something we should not encourage.
---------
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
The "Key Count" metric in mania is very useless since you are already
expected to play maps with a specific Key Count when you are queueing.
This PR inserts the proportion of LNs (Long Notes) in the place of that
metric since it is one of the ways players can gudge their skillsets
(This idea comes from reddit)
Also improved the test suite for other skillsets by making the
architecture more minor ruleset friendly
Addresses https://github.com/ppy/osu/discussions/37568.
---------
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
Co-authored-by: Dean Herbert <pe@ppy.sh>
Kao Li Chin (Gao Li Jin)
·
2026-05-08 18:04:29 +09:00
When editing metadata, it's annoying that the editor returns to compose
mode when switching between difficulties. This fixes that fallacy.
Supersedes and closes https://github.com/ppy/osu/pull/36724.
Can reproduce the failure via something like
diff --git a/osu.Game.Rulesets.Mania/Edit/Setup/ManiaDifficultySection.cs b/osu.Game.Rulesets.Mania/Edit/Setup/ManiaDifficultySection.cs
index fe5c437e40..92c58a7bde 100644
--- a/osu.Game.Rulesets.Mania/Edit/Setup/ManiaDifficultySection.cs
+++ b/osu.Game.Rulesets.Mania/Edit/Setup/ManiaDifficultySection.cs
@@ -187,13 +187,13 @@ private void updateKeyCount(ValueChangedEvent<int> keyCount)
{
if (!t.GetResultSafely())
{
- Schedule(() =>
+ Scheduler.AddDelayed(() =>
{
changeHandler!.RestoreState(-1);
Beatmap.Difficulty.CircleSize = keyCount.OldValue;
setStateFromActualKeyCount(keyCount.OldValue);
updatingKeyCount = false;
- });
+ }, 1000);
}
else
{
so I'm banking on this being just a case of CI fuzzing the test by being
slow.
If the test fails again on this same assert after this change there are
bigger problems at hand. But given the lack of local reproduction I'd
rather start with this than spend an hour staring at it.
Closes https://github.com/ppy/osu/issues/37553.
You can probably tell by the title that this is going to be a good one.
As previously mentioned in https://github.com/ppy/osu/pull/35395,
framework-side `TextBox` uses a bunch of `NumberFormat` properties from
`CurrentCulture` to contextually allow decimal points or minus signs in
a textbox.
In some languages, namely (of the ones we support): Finnish, Croatian,
Lithuanian, Norsk, Slovenian, and Swedish, `NumberFormat.NegativeSign`
is not `U+002D HYPHEN MINUS`, but instead `U+2212 MINUS SIGN`.
Therefore, in `FormSliderBar`, when `ToStandardFormattedString()` is
attempted to be used to set the textbox value, the hardcoded `U+002D
HYPHEN MINUS` is rejected on cultures that expect `U+2212 MINUS SIGN`,
and thus due to a feedback loop, all negative values are no longer
settable.
This applies the obvious fix of applying `NumberFormat.NegativeSign`.
Intends to close https://github.com/ppy/osu/issues/37395.
In the past there have been many discussions about this dual stages
wart. Whether it will continue to be "dual stages", or just a single
stage with 12/14/16/18K, whether all of the skinning weirdness related
to it (https://github.com/ppy/osu/issues/23620) will be supported, etc.
This isn't that, I don't want to get into that, and I'm not promising
anything. All I want to make sure here is that users cannot get their
data lost by editing an existing >10K beatmap, and be understandably
upset about it.
To that end this mostly apes how stable does things.
Until now the queue screen basically did nothing to let the user knowing
they were disconnected from the server. Now the various components will
correctly clear state and show a roughly competent "i'm trying to
reconnect" state.
https://github.com/user-attachments/assets/bff1b241-a6a2-445a-9ffa-b5682f2a3656
---
Can be tested using the following patch (hit `F7` to reconnect, with a 5
second delay to show the disconnected state too):
```diff
diff --git a/osu.Game/Online/PersistentEndpointClientConnector.cs b/osu.Game/Online/PersistentEndpointClientConnector.cs
index 7064906be4..ae539aba8d 100644
--- a/osu.Game/Online/PersistentEndpointClientConnector.cs
+++ b/osu.Game/Online/PersistentEndpointClientConnector.cs
@@ -99,6 +99,8 @@ private async Task connect()
// this will also create a new cancellation token source.
await disconnect(false).ConfigureAwait(false);
+ await Task.Delay(5000).ConfigureAwait(false);
+
// this token will be valid for the scope of this connection.
// if cancelled, we can be sure that a disconnect or reconnect is handled elsewhere.
var cancellationToken = connectCancelSource.Token;
diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs
index 703444a92f..fb467472d3 100644
--- a/osu.Game/OsuGameBase.cs
+++ b/osu.Game/OsuGameBase.cs
@@ -22,6 +22,7 @@
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Textures;
using osu.Framework.Input;
+using osu.Framework.Input.Events;
using osu.Framework.Input.Handlers;
using osu.Framework.Input.Handlers.Joystick;
using osu.Framework.Input.Handlers.Midi;
@@ -65,6 +66,7 @@
using osu.Game.Scoring;
using osu.Game.Skinning;
using osu.Game.Utils;
+using osuTK.Input;
using RuntimeInfo = osu.Framework.RuntimeInfo;
namespace osu.Game
@@ -104,7 +106,7 @@ public partial class OsuGameBase : Framework.Game, ICanAcceptFiles, IBeatSyncPro
/// </summary>
private const double global_track_volume_adjust = 0.8;
- public virtual bool UseDevelopmentServer => DebugUtils.IsDebugBuild;
+ public virtual bool UseDevelopmentServer => false;
public virtual EndpointConfiguration CreateEndpoints() =>
UseDevelopmentServer ? new DevelopmentEndpointConfiguration() : new ProductionEndpointConfiguration();
@@ -466,6 +468,20 @@ private void addFilesWarning()
}
}
+ protected override bool OnKeyDown(KeyDownEvent e)
+ {
+ if (e.Key == Key.F7)
+ {
+ Logger.Log("Forcing reconnect!", level: LogLevel.Important);
+
+ ((IStatefulUserHubClient)MultiplayerClient).ServerShuttingDown();
+ ((IStatefulUserHubClient)SpectatorClient).ServerShuttingDown();
+ ((IStatefulUserHubClient)metadataClient).ServerShuttingDown();
+ }
+
+ return base.OnKeyDown(e);
+ }
+
private void onTrackChanged(WorkingBeatmap beatmap, TrackChangeDirection direction) => beatmapClock.ChangeSource(beatmap.Track);
protected virtual void InitialiseFonts()
```
Fixes a bug that allowed for selecting the same mod twice in multiplayer
if the playlist entry has non-default settings for a required mod.
This happens due to a strict equality mod check in the mod set
compatibility check function, which only considers mods duplicates if
their settings are exactly the same. Replacing with a more lenient
`Type` check fixes this.
Adds a regression test for this behavior
Fixes https://github.com/ppy/osu/issues/37625.
---------
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
This PR refactors the report popover to have an optional confirmation
message after completing the request. This was initially meant for
#32584, but then I realized I can first test it out on the user
profiles, so I've implemented it here as well. Can be reviewed commit by
commit.
https://github.com/user-attachments/assets/cd59c560-c824-4a5e-bab6-5ecbf5125af1
---------
Co-authored-by: Dean Herbert <pe@ppy.sh>
I've seen this suggested quite a bit and is a pretty easy implementation
all things considered.
For now, while on the queue screen, you can open up the dashboard
overlay and select another player to duel. This will bring you into an
unranked lobby.
https://github.com/user-attachments/assets/712897a9-9350-4741-899d-59662c722e43
Song preview keeps playing when clicking "Start Watching" on
`SoloSpectatorScreen`. Making `SoloSpectatorScreen` suspends the screen
rather than exiting it, so neither `clearDisplay()` nor `OnExiting()`
fire.
Closes: https://github.com/ppy/osu/issues/36987
- depends on https://github.com/ppy/osu-framework/pull/6737
Adds simple input settings section for pens that allows disabling the
handler and adjusting sensitivity. The section appears in-between Tablet
and Touch, and only on SDL3 (desktop and mobile). The pen sensitivity is
completely independent from mouse sensitivity.
<img width="537" height="149" alt="image"
src="https://github.com/user-attachments/assets/448eebba-84ea-4daf-8428-3bd07739bd6f"
/>
<br>
Keep in mind that the "Confine mouse cursor to window" mouse setting
also affects pens, feel free to suggest UX improvements. Also, toggling
"High precision mouse" might affect pens on certain configurations.
Edit: added image with updated header. Previously, it was "Device: Pen".
---------
Co-authored-by: Dean Herbert <pe@ppy.sh>
Based off of https://github.com/ppy/osu/pull/37478 with some
improvements such as:
* Simpler `progress` handling (single adjustable value instead of 2)
* 2 less drawable paths (replaced with circlular containers)
* Reworked remaining paths to have as little texture sizes as possible
---------
Co-authored-by: Krzysztof Gutkowski <krzysio.gutkowski@gmail.com>
Co-authored-by: Dean Herbert <pe@ppy.sh>