1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-11 01:47:45 +08:00

72104 Commits

Author SHA1 Message Date
Dean Herbert
003adadbf3
Merge pull request #31595 from ppy/pp-dev
January 2025 Diffcalc/PP release
2025-02-27 01:17:42 +09:00
Dean Herbert
87b6dddd11
Merge branch 'master' into pp-dev 2025-02-27 00:08:43 +09:00
Bartłomiej Dach
f3632a466f
Prevent closing team chat channels via Ctrl-W
As pointed out in
https://github.com/ppy/osu/pull/32079#issuecomment-2680297760.

The comment suggested putting that logic in `ChannelManager` but
honestly I kinda don't see it working out. It'd probably be multiple
boolean arguments for `leaveChannel()` (because `sendLeaveRequest` or
whatever already exists), and then there's this one usage in tournament
client:

	31aded6971/osu.Game.Tournament/Components/TournamentMatchChatDisplay.cs (L57-L58)

I'm not sure how that would interact with this particular change, but I
think there is a nonzero possibility that it would interact badly. So in
general I kinda just prefer steering clear of all that and adding a
local one-liner.
2025-02-26 12:06:50 +01:00
Bartłomiej Dach
31aded6971
Merge pull request #32108 from peppy/adjust-leaderboard-design-slightly
Adjust leaderboard score design slightly
2025-02-26 11:28:39 +01:00
Bartłomiej Dach
6b76b8ccdd
Do not allow adding more than 8 combo colours in editor 2025-02-26 11:24:06 +01:00
Bartłomiej Dach
2167c7b8d5
Limit beatmap encoder & decoder to at most 8 combo colours 2025-02-26 11:13:57 +01:00
Bartłomiej Dach
e48d36ad1e
Add failing encoder test case for too many combo colours 2025-02-26 11:10:33 +01:00
Dan Balasescu
c2875423ee
Cleanup score fetching a bit 2025-02-26 18:58:29 +09:00
Bartłomiej Dach
76bf03b05d
Add failing decoder test case for too many combo colours 2025-02-26 10:56:28 +01:00
Bartłomiej Dach
38d807e846
Merge pull request #32107 from peppy/fix-player-team-flag-replay
Fix `PlayerTeamFlag` skinnable component not showing team details during replay
2025-02-26 10:36:49 +01:00
Dan Balasescu
c280c8fa1c
Add support to tests
Somewhat informal because it isn't super easy to handle.
2025-02-26 18:31:06 +09:00
Dan Balasescu
3dde024650
Replace error handling with logs
- Handling all errors matches master a little bit better. Logging
exceptions in any case.
- Not throwing when beatmaps are missing simplifies tests.
2025-02-26 18:02:13 +09:00
Dean Herbert
c45a403fe2
Mostly revert sizes 2025-02-26 18:00:18 +09:00
Dan Balasescu
c7fd7cf9cd
Add missing ConfigureAwait 2025-02-26 17:39:56 +09:00
Dean Herbert
e8b7ec0f95
Adjust leaderboard score design slightly
This design is about to get replaced, so I'm just making some minor
adjustments since a lot of people complained about the font size in the
last update.

Of note, I'm only changing the font size which is one pt size lower than
we'd usually use. Also overlapping the mod icons to create a bit more
space (since there's already cases where they don't fit).

Closes https://github.com/ppy/osu/issues/32055 as far as I'm concerned.
I can read everything fine at 0.8x UI scale.
2025-02-26 17:01:51 +09:00
Dean Herbert
abc12abded
Fix PlayerTeamFlag skinnable component not showing team details during replay
For now, let's fetch on demand.

Note that song select local leaderboard has the same issue. I feel we should be
doing a lot more cached lookups (probaly with persisting across game restarts).
Maybe even replacing the realm user storage. An issue for another day.
2025-02-26 16:48:18 +09:00
Dan Balasescu
b7d431fdde
Include author 2025-02-26 15:04:43 +09:00
Dan Balasescu
59cfcb3595
Prefer local models where available 2025-02-26 15:04:37 +09:00
Dan Balasescu
90290997a7
Fix score panel difficulty depending on local beatmap
This is a very special case where online beatmap/ruleset models are
being ferried via `ScoreInfo` in what appear to `BeatmapDifficultyCache`
as local `BeatmapInfo`/`RulesetInfo` models. Here, BDC will incorrectly
attempt to proceed with calculating true difficulty where it cannot, and
return 0.

This is fixed locally because `ScoreInfo` is a very weird model, and I'm
not sure whether BDC should contain logic to work around this.
2025-02-26 14:49:00 +09:00
Bartłomiej Dach
65a62d5440
Attempt to preserve sample control point bank when encoding beatmap
This was reported internally in
https://discord.com/channels/90072389919997952/1259818301517725707/1343470899357024286.
The issue described was that sample specifications on control points in
stable disappeared after the beatmap was updated from lazer.

The reason why the sample specifications were getting dropped is that
they got lost in the logic that attempts to translate per-hitobject
samples that lazer has back into stable "green line" type control
points. That process only attempted to preserve volume and custom sample
bank, but did not keep the standard bank - likely because it's kind of
superfluous information *for correct sample playback of the objects*, as
the samples get encoded again for each object individually. However
dropping this information makes for a subpar editing experience.

The choice of which sample to pick the bank from is sort of arbitrary
and I'm not sure if there's a correct one to pick. Intuitively picking
the normal sample's bank (if there is one) seems most correct.
2025-02-25 15:39:35 +01:00
Dan Balasescu
baf20d8484
Fix loading spinners not hiding correctly 2025-02-25 23:17:23 +09:00
Dan Balasescu
bb457ca8e2
Clean up completion handling 2025-02-25 23:17:02 +09:00
Dan Balasescu
116b5a335a
ConfigureAwait(false) everywhere 2025-02-25 22:56:38 +09:00
Dan Balasescu
3b5bf391da
Arrays instead of enumerables 2025-02-25 22:55:55 +09:00
Dan Balasescu
8a27b6689e
Replace virtual async method with better abstraction 2025-02-25 22:51:36 +09:00
Dan Balasescu
dfae11101f
Populate playlists results screen with online beatmaps 2025-02-25 22:37:12 +09:00
Dan Balasescu
13ca8c20f6
Make results screens use tasks to fetch scores 2025-02-25 21:54:16 +09:00
Dean Herbert
b3965f0dd0
Merge pull request #32077 from bdach/double-click-difficulty-slider-nub
Fix double-clicking difficulty adjust sliders not resetting the value to default correctly
2025.225.0
2025-02-25 21:08:46 +09:00
Dean Herbert
aab23a4b27
Merge pull request #32096 from bdach/update-framework
Update framework
2025-02-25 21:06:42 +09:00
Bartłomiej Dach
e97c2fee0d
Update framework 2025-02-25 12:57:38 +01:00
Bartłomiej Dach
1f562ab47d
Fix double-clicking difficulty adjust sliders not resetting the value to default correctly
- Closes https://github.com/ppy/osu/issues/31888
- Supersedes / closes https://github.com/ppy/osu/pull/32060
2025-02-25 07:40:55 +01:00
Dean Herbert
b776993d36
Merge pull request #32081 from bdach/did-you-know-that-strings-have-casing
Fix hash comparison being case sensitive when choosing files for partial beatmap submission
2025-02-25 14:21:25 +09:00
Dan Balasescu
e7fefc8db7
Merge pull request #32084 from bdach/huh-swell-ticks
Do not give swell ticks any visual representation
2025-02-25 12:32:58 +09:00
Dan Balasescu
820821d6c7
Merge pull request #32085 from bdach/i-dont-even
Fix taiko swell ending samples playing at results sometimes
2025-02-25 12:31:59 +09:00
Dean Herbert
fa02d734da
Merge pull request #32079 from bdach/team-chat-channels
Add support for team chat channels
2025-02-25 12:05:34 +09:00
Bartłomiej Dach
c82cf40928
Do not give swell ticks any visual representation
Why is this a thing at all? How has it survived this long? I don't know.

As far as I can tell this only manifests on selected beatmaps with "slow
swells" that spend the entire beatmap moving in the background. On other
beatmaps the tick is faded out, probably due to the initial transform
application that normally "works" but fails hard on these slow swells.

Can be seen on https://osu.ppy.sh/beatmapsets/1432454#taiko/2948222.
2025-02-24 15:32:17 +01:00
Bartłomiej Dach
e13aa4a99b
Do not allow leaving team channels 2025-02-24 15:10:20 +01:00
Bartłomiej Dach
e8f7bcb6e6
Only show team channel section when there is a team channel 2025-02-24 15:06:02 +01:00
Bartłomiej Dach
41db3c1501
Fix taiko swell ending samples playing at results sometimes
Closes https://github.com/ppy/osu/issues/32052.

Sooooo... this is going to be a rant...

To understand why this is going to require a rant, dear reader, please
do the following:

1. Read the issue thread and follow the reproduction scenario (download
   map linked, fire up autoplay, seek near end, wait for results, hear
   the sample spam).
2. Now exit out to song select, *hide the toolbar*, and attempt
   reproducing the issue again.
3. Depending on ambient mood, laugh or cry.

Now, *why on earth* would the *TOOLBAR* have any bearing on anything?

Well, the chain of failure is something like this:

- The toolbar hides for the duration of gameplay, naturally.
- When progressing to results, the toolbar gets automatically unhidden.
- This triggers invalidations on `ScrollingHitObjectContainer`. I'm not
  precisely sure which property it is that triggers the invalidations,
  but one clearly does. It may be position or size or whichever.
- When the invalidation is triggered on `layoutCache`, the next
  `Update()` call is going to recompute lifetimes for ALL hitobject
  entries.
- In case of swells, it happens that the calculated lifetime end of the
  swell is larger than what it actually ended up being determined as at
  the instant of judging the swell, and thus, the swell is *resurrected*,
  reassigned a DHO, and the DHO calls `UpdateState()` and plays the
  sample again despite the `samplePlayed` flag in `LegacySwell`, because
  all of that is ephemeral state that does not survive a hitobject
  getting resurrected.

Now I *could* just fix this locally to the swell, maybe, by having some
time lenience check, but the fact that hitobjects can be resurrected by
the *toolbar* appearing, of all possible causes in the world, feels
just completely wrong. So I'm adding a local check in SHOC to not
overwrite lifetime ends of judged object entries.

The reason why I'm making that check specific to end time is that I can
see valid reasons why you would want to recompute lifetime *start* even
on a judged object (such as playfield geometry changing in a significant
way). I can't think of a valid reason to do that to lifetime *end*.
2025-02-24 14:30:55 +01:00
Bartłomiej Dach
0312467c88
Fix hash comparison being case sensitive when choosing files for partial beatmap submission
Noticed when investigating https://github.com/ppy/osu/issues/32059, and
also a likely cause for user reports like
https://discord.com/channels/188630481301012481/1097318920991559880/1342962553101357066.

Honestly I have no solid defence, Your Honour. I guess this just must
not have been tested on the client side, only relied on server-side
testing.
2025-02-24 12:30:37 +01:00
Bartłomiej Dach
4ac4b308e1
Add visual test coverage of team channels 2025-02-24 09:48:03 +01:00
Bartłomiej Dach
194f05d258
Add icons to chat channel group headers
Matches web in appearance.

Cross-reference: 3c9e99eaf4/resources/js/chat/conversation-list.tsx (L13-L19)
2025-02-24 09:44:41 +01:00
Bartłomiej Dach
be8ec75948
Display team chat channel in separate group 2025-02-24 09:40:03 +01:00
Bartłomiej Dach
d8cb3b68d3
Add "Team" channel type
The lack of this bricks chat completely due to newtonsoft
deserialisation errors:

	2025-02-24 08:32:58 [verbose]: Processing response from https://dev.ppy.sh/api/v2/chat/updates failed with Newtonsoft.Json.JsonSerializationException: Error converting value "TEAM" to type 'osu.Game.Online.Chat.ChannelType'. Path 'presence[39].type', line 1, position 13765.
	2025-02-24 08:32:58 [verbose]: ---> System.ArgumentException: Requested value 'TEAM' was not found.
	2025-02-24 08:32:58 [verbose]: at Newtonsoft.Json.Utilities.EnumUtils.ParseEnum(Type enumType, NamingStrategy namingStrategy, String value, Boolean disallowNumber)
	2025-02-24 08:32:58 [verbose]: at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
2025-02-24 09:35:51 +01:00
Bartłomiej Dach
f4b427ee66
Add failing test case 2025-02-24 09:15:21 +01:00
Kunologist
543ad5b2a4 Add alt+wheel volume adjustment on result screen 2025-02-24 14:16:33 +08:00
Dean Herbert
e9b8154090
Merge pull request #32005 from smoogipoo/fix-multi-leave-host-sound
Fix host change sounds playing when exiting multiplayer rooms
2025-02-24 00:23:39 +09:00
Dean Herbert
8c20ef16fd
Merge pull request #32014 from bdach/use-current-button-wrong
Fix "use current distance snap" button incorrectly factoring in last object with velocity
2025-02-23 21:34:20 +09:00
Dean Herbert
dfee020773
Merge pull request #32011 from bdach/adjust-distance-snap-grid-rounding-tolerance
Adjust rounding tolerance in distance snap grid ring colour logic
2025-02-23 21:22:37 +09:00
Joseph Madamba
c4a055a0d4
Merge pull request #32050 from ziv-vy/master
Capitalise "windows" on high precision mouse tooltip
2025-02-22 16:07:57 -08:00