1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 10:33:30 +08:00
osu-lazer/osu.Game
Bartłomiej Dach 86588778b1 Implement fallback decoder registration
After the preparatory introduction of LineBufferedReader, it is now
possible to introduce registration of fallback decoders that won't drop
input supplied in the first line of the file.

A fallback decoder is used when the magic in the first line of the file
does not match any of the other known decoders. In such a case,
the fallback decoder is constructed and provided a LineBufferedReader
instance. The process of matching magic only peeks the first non-empty
line, so it is available for re-reading in Decode() using ReadLine().

There can be only one fallback decoder per type; a second attempt of
registering a fallback will result in an exception to avoid bugs.

To address the issue of parsing failing on badly or non-headered files,
set the legacy decoders for Beatmaps and Storyboards as the fallbacks.

Due to non-trivial logic, several new, passing unit tests with possible
edge cases also included.
2019-09-15 01:28:07 +02:00
..
Audio Fix skinning support for combobreak 2019-06-30 21:58:30 +09:00
Beatmaps Implement fallback decoder registration 2019-09-15 01:28:07 +02:00
Configuration Merge remote-tracking branch 'refs/remotes/ppy/master' into beatmap-video 2019-09-13 13:39:58 +03:00
Database Don't share single scheduler across all model managers 2019-08-08 18:26:07 +09:00
Graphics Merge remote-tracking branch 'refs/remotes/ppy/master' into beatmap-video 2019-09-13 13:39:58 +03:00
Input Update in line with framework changes 2019-08-27 18:43:58 +09:00
IO Implement fallback decoder registration 2019-09-15 01:28:07 +02:00
IPC Move ArchiveModelManager import process to async flow 2019-06-10 13:42:22 +09:00
Migrations Use correct database migration 2019-09-13 13:57:55 +03:00
Online Add spacing to mod icons on leaderboards 2019-09-11 16:08:01 -07:00
Overlays Remove useless container 2019-09-14 06:34:57 +03:00
Properties Merge branch 'master' into correct-preview-loop 2019-01-31 10:53:09 +01:00
Replays Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
Rulesets Change osu!catch key trigger to occur on frame before positional change 2019-09-13 23:06:35 +09:00
Scoring Change osu!catch key trigger to occur on frame before positional change 2019-09-13 23:06:35 +09:00
Screens Merge remote-tracking branch 'refs/remotes/ppy/master' into beatmap-video 2019-09-13 13:39:58 +03:00
Skinning Migrate decoding to line-buffered reader 2019-09-15 01:28:07 +02:00
Storyboards Fix storyboard samples not stopping on exit 2019-09-03 19:28:10 +09:00
Tests Migrate decoding to line-buffered reader 2019-09-15 01:28:07 +02:00
Users Merge branch 'master' into previous-usernames 2019-08-13 14:21:44 +09:00
Utils Cleanup 2019-08-28 20:15:28 +09:00
osu!.res And then everything became one 2017-09-19 16:06:58 +09:00
osu.Game.csproj Update resources 2019-09-13 10:56:21 +03:00
OsuGame.cs Add "osu!classic" as a bundled skin choice 2019-08-29 16:39:42 +09:00
OsuGameBase.cs Actually register the RulesetConfigCache as a component 2019-09-06 01:13:58 +09:00