Commit Graph

13 Commits

Author SHA1 Message Date
Dean Herbert 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
Dan Balasescu 328166f0d5 Add failing test 2022-02-24 17:01:04 +09:00
Dean Herbert de076678fe Fix some remaining test failures 2022-01-12 17:00:16 +09:00
Dean Herbert 9e9341597d Remove unused using statement 2021-12-13 17:59:04 +09:00
Dean Herbert 309290a3c9 Use new method in more places that can benefit from it 2021-12-13 16:56:43 +09:00
Dean Herbert 62d670a3ca Update `DifficultyCalculator` to take an `IWorkingBeatmap` 2021-11-15 19:16:48 +09:00
Dean Herbert 317506d4d7 Fix a few more "maybe null" inspections 2021-11-04 16:11:23 +09:00
Dean Herbert f68d6dbc8f Update score submission serialisation tests to use `SubmittableScore` 2021-10-29 14:32:31 +09:00
Dean Herbert 346e36d32a Make `Mod.Description` abstract and add missing descriptions 2021-04-15 14:36:26 +09:00
smoogipoo d2d7f77430 Fix mods not being serialised correctly in ScoreInfo 2021-04-12 20:09:01 +09:00
smoogipoo 804ffe9f48 Fix inspections 2021-03-30 09:00:09 +09:00
smoogipoo be9b07a4cf Merge branch 'master' into difficulty-adjustment-extension 2021-02-10 20:42:08 +09:00
Dean Herbert c8f1126bd7 Add failing test 2021-02-03 19:44:39 +09:00