-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fetch missing beatmap when importing replay #24450
Conversation
osu.Game/OsuGame.cs
Outdated
@@ -854,6 +854,8 @@ protected override void LoadComplete() | |||
|
|||
MultiplayerClient.PostNotification = n => Notifications.Post(n); | |||
|
|||
ScoreManager.Performer = this; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know how to feel about this sort of thing. First of all, even if we're to do this it should be next to the other ScoreManager
attachment thingies (so after line 853). Secondly, that's three things being jammed from OsuGame
into ScoreManager
in this janky way. I'm almost at the point where I think it'd be worth making all of these managers Component
s so that they can leverage DI properly or something. Not sure.
Looking at the video alone, the UX of this is still pretty shocking. Notifications popping up all over the place, a fullscreen view which doesn't let the user know what's going on and hijacks the full game. I feel like the only way this is going to work well is using a custom notification which allows downloading the beatmap inline.
The notification would not dismiss while the download is happening, and after the local availability changes, it would retry the import in the same notification. I'm not even sure it's worth reviewing this code without getting the UX correct first. |
Then I think we can start with custom notifications, but it may lack design. |
Just based on the videos, this is looking much much better than what you had. I'd hope we can make the inline beatmap card display a bit nicer, but the flow looks decent. |
Ok, well, I tried to do something with this branch... Of note:
Note that this is still like 50% jank because of the amount of notifications fired. In an ideal world you'd probably want to eliminate both the "score failed" notification and the "importing" notification. But neither is trivial as those notifications are nestled deep into @peppy Leaving this for you to check UI/UX. Not sure you'll like my decisions, so go ham. |
@bdach on an initial pass my main question would be why you can't click the card to bring up the overlay. Is it a mobile concern? |
Which overlay are you referring to specifically? It's a bit unclear, sorry. |
When clicking the new nano beatmap card inside the notification, it always triggers download (via this override) rather than open the beatmap overlay. Feels a bit odd to me. |
Well the general thinking was that the card is too small for multiple actions and tiny buttons that master has there, so it should just have one action always. And if it's gonna have one always, it should be the most convenient one, i.e. "download the map now", rather than "show the beatmap set overlay, then download the map". Dunno if valid, I guess there's no real reason not to have it open the overlay first. But that does beg the question where would download go on the card (if anywhere at all). |
Hmm, but the weird thing is the download button is still there (and even more weirdly, it's the only part of the card that doesn't have a "Download" tooltip): Judging from your last reply, was the button still being there unintentional? I think it's likely fine to have users click the download button specifically to download the beatmap, as it is an established UX from cards everywhere else. |
I'll take another look tomorrow. The tooltip thing is not intentional but the icon generally was supposed to be where it is (it was no longer meant to really be a button itself, more like an indication what is gonna happen when the card is clicked anywhere). I'll see if I can instead have just the expanded right part be the download button, and have the left part open the beatmap overlay, since that seems to be the UX you're angling for. |
@peppy I think things should be closer to expectations with the latest commit. If they aren't let me know, or feel free to take over, I guess. Whichever's easier. |
6b1d5df
to
f726c38
Compare
{ | ||
if (r.All<BeatmapSetInfo>().Any(s => !s.DeletePending && s.OnlineID == beatmapSetInfo.OnlineID)) | ||
{ | ||
Text = NotificationsStrings.MismatchingBeatmapForReplay; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't this going to get overwritten by the Text=
in LoadComplete
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah good spot. Should be addressed by ed9039f.
In addition to the one issue I haven't fixed, please check my new commits to make sure you agree with them. |
Other changes look good, thanks 👍 |
maybe we need to not auto download if there are a beatmapset match the online id? |
@cdwcgt I'm pretty sure your original version had that too so ¯\_(ツ)_/¯ I think it's fine as is. |
MemoryStreamArchiveReader.GetStream()
failing in some cases #24846Reimplementation for
beatmapset
that alreadyPendingDelete
when import score #22741Discussed in
Redesigned based on peppy's comment
I'm a little confused about the adjustment of anchor and origin, so the design may not look good, so please let me know if you are not satisfied
which this pr do:
If you think the design is okay, just add localization then done.
osu.development.2023-09-04.16-06-26_output_x264.mp4
outdated
Tested importing from Stable, but it's annoying when missing beatmap keep appearing.
I cannot use DI to get
IPerformFromScreenRunner
in ScoreImporter, so I pass it byScoreManager
, I don't know if there is a better solution.Some rulesets may need beatmap information when parsing the score, like mania need key count, so I choose don't to parse the score in advance
Current behavior:
ReplayMissingBeatmapScreen
.AutomaticallyDownloadWhenSpectating
is true, then auto download.after score imported or
ReplayMissingBeatmapScreen
dispose will dispose the stream.osu.2023-08-02.17-41-46_x264.mp4