Commit Graph

49467 Commits

Author SHA1 Message Date
1ee0be5e39 Ensure gameplay can't start when an UnknownMod is present 2022-03-09 17:57:58 +09:00
0267aed846 Change ToMod to return an UnknownMod rather than throw if a mod isn't available
As seen by this kind of crash, having the `.ToMod` method throw can be
very problematic and also hidden (as it is used inside of models in
places where exceptions are not expected to occur).

Given there are tens of usages of this method, returning a placeholder
mod seems like a better idea than outright throwing.

```
 An unhandled has occurred.
 System.InvalidOperationException:
There is no mod in the ruleset (osu) matching the acronym AS.
 at osu.Game.Online.API.APIMod.ToMod(Ruleset ruleset) in /Users/dean/Projects/osu/osu.Game/Online/API/APIMod.cs:line 54
 at osu.Game.Scoring.ScoreInfo.<get_Mods>b__117_0(APIMod m) in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
 at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
 at osu.Game.Scoring.ScoreInfo.get_Mods() in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
 at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c.<subscribeToLocalScores>b__40_2(ScoreInfo s) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line 199
 at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
 at osu.Game.Database.RealmObjectExtensions.Detach[T](IEnumerable`1 items) in /Users/dean/Projects/osu/osu.Game/Database/RealmObjectExtensions.cs:line 180
 at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c__DisplayClass40_0.<subscribeToLocalScores>g__localScoresChanged|1(IRealmCollection`1 sender, ChangeSet changes, Exception exception) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line
209
 at Realms.RealmCollectionBase`1.Realms.INotifiable<Realms.NotifiableObjectHandleBase.CollectionChangeSet>.NotifyCallbacks(Nullable`1 changes, Nullable`1 exception)
 at Realms.NotifiableObjectHandleBase.NotifyObjectChanged(IntPtr managedHandle, IntPtr changes, IntPtr exception)
```
2022-03-09 17:57:55 +09:00
aad9e856b1 Merge pull request #17185 from smoogipoo/fix-local-score-linking
Fix avatar not clickable after watching replay
2022-03-09 15:39:54 +09:00
ad0ca5673a Fix avatar not clickable after watching replay 2022-03-09 14:39:02 +09:00
affcf5180b Merge pull request #17161 from smoogipoo/fix-listing-score-conversion
Fix scores not being recalculated in beatmap overlay
2022-03-09 13:32:45 +09:00
58aef25ad5 Merge pull request #17152 from bdach/mod-overlay/difficulty-multiplier
Implement difficulty multiplier display for new mod select design
2022-03-09 12:11:16 +09:00
b3fd156f10 Merge pull request #17158 from peppy/realm-recover-from-newer-database-version
Add flow to allow recovery after running an older release (with a different realm database version)
2022-03-09 11:30:58 +09:00
810cbd745d Merge pull request #17170 from peppy/fix-top-local-rank-test-failures-realm-callback
Refactor top local rank test method to be more resilient to slow realm callbacks
2022-03-09 11:14:37 +09:00
af4423959c Merge pull request #17169 from peppy/fix-song-select-test-failures-realm-callback
Refactor song select test methods to be resilient to slow realm callbacks
2022-03-09 11:14:26 +09:00
714789f726 Merge pull request #17167 from peppy/fix-download-button-test-failure
Fix potential test failure on slow realm callback in `TestSceneBeatmapDownloadButton`
2022-03-09 01:49:23 +09:00
74fe1e8e47 Merge pull request #17166 from peppy/fix-realm-skin-dropdown-failure
Fix potential crash on rare incorrect firing of skin dropdown update methods
2022-03-09 01:46:31 +09:00
233c8232d3 Fix TestSceneTopLocalRank.TestHighScoreSet not waiting for potentially slow realm callback
As brought to light by https://gist.github.com/smoogipoo/56eda7ab56b9d1966556f2ca7a80a847.
2022-03-09 01:22:01 +09:00
286bafe326 Refactor multiple TestScenePlaySongSelect test methods to be resilient to slow realm callbacks 2022-03-09 01:18:53 +09:00
821de83e54 Merge pull request #17165 from smoogipoo/fix-intermittent-test
Fix intermittent multiplayer ready button test failures
2022-03-09 01:16:38 +09:00
56ad684f5b Fix potential test failure on slow realm callback in TestSceneBeatmapDownloadButton
As brought to light by https://gist.github.com/smoogipoo/56eda7ab56b9d1966556f2ca7a80a847.
2022-03-09 01:11:46 +09:00
a2ef086c1f Fix potential crash on rare incorrect firing of skin dropdown update methods
As brought to light by https://gist.github.com/smoogipoo/56eda7ab56b9d1966556f2ca7a80a847.

There's a chance that the dropdown is not populated by the time
`updateSelectedSkinFromConfig` is fired via an external means (config
changes).
2022-03-09 01:08:13 +09:00
729af28a64 Fix intermittent test failure 2022-03-09 00:48:12 +09:00
94d5e2f264 Fix test failure ripple through entire TestScene 2022-03-09 00:48:03 +09:00
e9a2d23542 Fix score order related test failure 2022-03-08 23:35:35 +09:00
a352a140bc Merge pull request #17157 from peppy/fix-statistics-json-serialisation
Fix incorrect serialisation of submitted scores
2022-03-08 20:20:31 +09:00
d13a66a96c Rework test scene by only relying on OnlineID 2022-03-08 20:11:56 +09:00
4603e082f5 Merge pull request #17160 from peppy/remove-unnecessary-user-submittable-score
Remove `user` from `SubmittableScore`
2022-03-08 19:34:47 +09:00
f5cd967635 Fix scores not being recalculated in beatmap listing 2022-03-08 19:07:39 +09:00
e0dc3a04f3 Merge pull request #17159 from smoogipoo/add-hitresult-helper
Add IsBasic() and IsTick() extensions on HitResult
2022-03-08 18:46:39 +09:00
b0f40d9e45 Remove user from SubmittableScore
This wasn't being used by osu-web, and included far too much unnecessary
data. Of note, `pp` and `ruleset_id` are also not strictly required, but
there's no harm in sending them so I've left them be for now.
2022-03-08 18:38:24 +09:00
6565c95b17 Remove unused variable 2022-03-08 18:19:54 +09:00
a172fc6cb8 Add IsBasic() and IsTick() extensions on HitResult 2022-03-08 18:19:12 +09:00
0718a55ad0 Add flow to allow recovery after running an older release (with a different realm database version)
As brought up in https://github.com/ppy/osu/discussions/17148
2022-03-08 18:15:28 +09:00
9a347af5c7 Add test coverage of SubmittableScore serialisation to (roughly) match spec 2022-03-08 17:58:52 +09:00
589a40ca2d Add EnumMember naming to HitResult to allow for correct json serialisation 2022-03-08 17:58:37 +09:00
719331420c Merge pull request #17155 from peppy/beatmap-leaderboard-dont-handle-offset-changes
Fix `BeatmapLeaderboard` refreshing on changes in local offset setting
2022-03-08 15:38:05 +09:00
622ec53130 Fix BeatmapLeaderboard refreshing on unrelated changes to a beatmap 2022-03-08 14:50:47 +09:00
2a55c5e02e Add extension method to detect and isolate realm collection-level changes 2022-03-08 14:50:47 +09:00
643f68e844 Better annotate initial rolling counter value set 2022-03-07 23:11:20 +01:00
019f4d965d Show two decimal digits on mod multiplier rather than one 2022-03-07 22:55:55 +01:00
c25d7a1c75 Use rolling counter for multiplier display 2022-03-07 22:50:51 +01:00
78a3b5961e Implement basic difficulty multiplier display 2022-03-07 22:50:51 +01:00
e0d2c8ca5e Merge pull request #17046 from peppy/clowd-squirrel
Replace squirrel fork with `Clowd.Squirrel`
2022-03-07 16:25:40 +09:00
51f6eb4028 Merge pull request #17075 from peppy/realm-property-watching
Add ability to watch properties via a `RealmAccess` helper method
2022-03-07 14:38:23 +09:00
31d6c75f40 Merge branch 'master' into realm-property-watching 2022-03-07 13:53:17 +09:00
b90a5864b1 Merge pull request #17138 from peppy/disallow-icon-interaction
Disallow interaction with carousel set difficulty icons unless selected
2022-03-07 13:00:18 +09:00
da29947ecd Disallow interaction with carousel set difficulty icons unless selected
I kinda liked this flow, but from multiple reports from users it
definitely seems in the way. We can revisit after the new design is
applied to song select.

Note that this means the tooltips also don't display. If it is preferred
that they should (arguable from a UX perspective, since I'd expect to be
able to click at that point) then the issue can be addressed using a
slightly different path (a few more lines - nothing too complex).
2022-03-07 11:34:08 +09:00
bd1adaf245 Merge pull request #17115 from frenzibyte/manual-channel-scroll
Refactor channel scrolling container to handle non-user scrolls
2022-03-07 11:26:23 +09:00
ba83db0229 Merge pull request #17134 from bdach/mod-overlay/popup-screen-title
Implement popup screen title component
2022-03-07 11:03:38 +09:00
3e73b8c78a Merge pull request #17059 from frenzibyte/fix-storyboard-sample-rate
Fix storyboard samples rate not adjusted from actual gameplay mods
2022-03-07 09:41:06 +09:00
e5a6564034 Merge branch 'master' into fix-storyboard-sample-rate 2022-03-07 03:12:40 +03:00
d9be65ea39 Remove no longer necessary CancelUserScroll method 2022-03-06 23:58:06 +03:00
60334046e4 Revert UserTrackingScrollContainer changes 2022-03-06 23:57:51 +03:00
a13a087f5d Add xmldoc to trackNewContent to explain its purpose 2022-03-06 23:51:27 +03:00
9ec0e74813 Move scrolling to UpdateAfterChildren to avoid scheduling
At least that's what I believe "let FillFlow update to new size" means.
2022-03-06 23:50:58 +03:00