1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-11 04:17:18 +08:00

45682 Commits

Author SHA1 Message Date
Bartłomiej Dach
e97c2fee0d
Update framework 2025-02-25 12:57:38 +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
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
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
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
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
d95f31dc5a
Also fix operating system terminology 2025-02-22 15:22:43 -08:00
ziv_vy
c77fed637c
Update MouseSettingsStrings.cs
CAPITALISED ONE GODDAMN LETTER
2025-02-23 01:01:39 +02:00
Bartłomiej Dach
de78518fea
Fix "use current distance snap" button incorrectly factoring in last object with velocity
Closes https://github.com/ppy/osu/issues/32003.
2025-02-21 12:52:59 +01:00
Bartłomiej Dach
a690b0bae9
Adjust rounding tolerance in distance snap grid ring colour logic 2025-02-21 12:05:23 +01:00
Dan Balasescu
f868f03e1b
Fix host change sounds playing when exiting multiplayer rooms 2025-02-21 16:38:55 +09:00
Dan Balasescu
49c192b173
Fix wrong beatmap attributes in multiplayer spectate 2025-02-21 16:19:05 +09:00
Dean Herbert
1350256599
Merge pull request #31968 from frenzibyte/fix-scaling-issues
Fix osu!taiko and osu!catch being oversized on mobile platforms
2025-02-21 02:42:50 +09:00
Dean Herbert
95b64bd96b
Merge pull request #31965 from bdach/update-framework
Update framework
2025-02-21 00:02:57 +09:00
Dean Herbert
5d73af10e9
Merge pull request #31967 from peppy/fix-results-applause-sound-overload
Fix results screen applause playing too loud during multiplayer spectating
2025-02-21 00:00:34 +09:00
Dean Herbert
97c69cf1a7
Merge pull request #31969 from bdach/flag-display-adjustment
Adjust handling of team flags with non-matching aspect ratio to match web
2025-02-20 23:55:53 +09:00
Dean Herbert
a75ec75a8f
Fix using 2025-02-20 23:48:21 +09:00
Bartłomiej Dach
7dc5ad2f0e
Adjust handling of team flags with non-matching aspect ratio to match web 2025-02-20 15:44:30 +01:00
Dean Herbert
4f4d2b3b3f
Fix results screen applause playing too loud during multiplayer spectating 2025-02-20 23:42:32 +09:00
Salman Alshamrani
b4d270045b Publicise base draw size property 2025-02-20 09:29:18 -05:00
Dean Herbert
1e3d5d7d81
Remove left-over debug code 2025-02-20 23:05:47 +09:00
Bartłomiej Dach
d8bba16809
Update framework
Pulls in fix for https://github.com/ppy/osu/issues/31956.
2025-02-20 14:38:54 +01:00
Dean Herbert
4c934dae51
Merge pull request #31774 from frenzibyte/carousel-v2-implement-designs
Implement designs for beatmap carousel v2
2025-02-20 17:56:40 +09:00
Dean Herbert
df5fe07995
Merge pull request #31941 from bdach/fix-multi-spectator-freestyle
Fix multiplayer spectator not working with freestyle
2025-02-20 16:25:09 +09:00
Dean Herbert
81b4f0d8ca
Add comments regarding jank 2025-02-20 15:49:40 +09:00
Dean Herbert
1c53d93a8f
Add disposal and pre-check before reloading audio track 2025-02-20 15:32:47 +09:00
Dean Herbert
e15d5a155e
Merge pull request #31945 from peppy/update-framework
Update framework
2025-02-20 15:22:13 +09:00
Dean Herbert
4da3752f95
Update flag test resources in line with web rename 2025-02-20 14:42:26 +09:00
Dean Herbert
e91706f418
Update framework 2025-02-20 14:26:33 +09:00
Salman Alshamrani
092d80cf1b Fix PanelBeatmapStandalone not handling selection state 2025-02-19 10:20:04 -05:00
Bartłomiej Dach
f9d91431fd
Fix multiplayer spectator not working with freestyle
It's no longer possible to just assume that using the ambient
`WorkingBeatmap` is gonna work.

Bit dodgy but seems to work and also I'd hope that `WorkingBeatmapCache`
makes this not overly taxing. If there are concerns this can probably be
an async load or something.
2025-02-19 15:15:21 +01:00
Bartłomiej Dach
aa9e1ac8b4
Specify endpoint for production instance of beatmap submission service 2025-02-19 12:46:04 +01:00
Bartłomiej Dach
687c9d6e17
Send "notify on discussion replies" setting value in beatmap creation request 2025-02-19 12:45:37 +01:00
Dean Herbert
7566da8663
Add sleep to reduce spinning when waiting on two factor auth 2025-02-18 23:52:55 +09:00
Dean Herbert
b905a92b20
Merge pull request #31925 from bdach/wtfffffffffff
Fix several issues with API login flow which manifest on second factor authentication
2025-02-18 23:52:42 +09:00
Dean Herbert
66f7f92469
Merge pull request #31928 from bdach/perform-on-selection-is-weird
Fix nudging objects in catch editor not changing their hyperdash state
2025-02-18 21:17:10 +09:00
Bartłomiej Dach
e6174f195c
Ensure EditorBeatmap.PerformOnSelection() marks objects in selection as updated
Closes https://github.com/ppy/osu/issues/28791.

The reason why nudging was not changing hyperdash state in catch was
that `EditorBeatmap.Update()` was not being called on the objects that
were being modified, therefore postprocessing was not performed,
therefore hyperdash state was not being recomputed.

Looking at the usage sites of `EditorBeatmap.PerformOnSelection()`,
about two-thirds of callers called `Update()` themselves on the objects
they mutated, and the rest didn't. I'd say that's the failure of the
abstraction and it should be `PerformOnSelection()`'s responsibility to
call `Update()` there. Yes in some of the cases here this will cause
extraneous calls that weren't done before, but the method is already
heavily disclaimed as 'expensive', so I'd say usability should come
first.
2025-02-18 12:06:42 +01:00
Bartłomiej Dach
b3aba537b5
Add missing early return
As spotted in testing with production. Would cause submission to proceed
even if the export did, with an empty archive.
2025-02-18 11:35:29 +01:00
Bartłomiej Dach
98ff4e054a
Merge pull request #31924 from peppy/fix-kiai-fountains-rapid-fire
Fix kiai fountains sometimes not displaying when they should
2025-02-18 11:27:02 +01:00
Bartłomiej Dach
930e02300f
Do not allow flushed requests to transition API into Failing state
Flushes are assumed to have already come from a definitive state change
(read: disconnection). Allowing the exceptions that come from failing
the flushed requests to trigger the `Failing` code paths makes
completely incorrect behaviour possible.
2025-02-18 10:20:38 +01:00
Bartłomiej Dach
d6552f00be
Do not attempt to automatically reconnect if there is no login to use
Because it'll fail anyway - there is either no username or no password.
The reason why this is important is that the block was also setting API
state to `Connecting`.
2025-02-18 10:14:00 +01:00
Bartłomiej Dach
8299dfc6f2
Add local guard before scheduled placeholder user set
When API is in `RequiresSecondFactorAuth` state, `attemptConnect()` is
called over and over in a loop, with no sleeping, which means that the
scheduler accumulates hundreds of thousands of these delegates. Sure you
could add a sleep in there maybe, but it seems pretty wasteful to have
the `localUser.IsDefault` guard *inside* the schedule anyway, so this is
what I opted for.
2025-02-18 10:10:51 +01:00
Dean Herbert
7e1984452f
Tidy up remaining common code 2025-02-18 16:52:19 +09:00