osu/osu.Game/Beatmaps
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
..
ControlPoints Centralise default beat length specification 2019-08-28 20:22:16 +09:00
Drawables Fix unavailable rulesets crashing at song select 2019-09-04 20:28:52 +09:00
Formats Implement fallback decoder registration 2019-09-15 01:28:07 +02:00
Legacy Apply new resharper refactors 2019-08-09 12:29:33 +09:00
Timing Expose break fade duration and add it in the calculation 2019-08-07 16:59:35 +03:00
Beatmap.cs Add IBeatmap<T> interface for typed hitobject retrieval 2019-08-28 20:19:22 +09:00
BeatmapConverter.cs Turn on warnings, resolve issues 2019-04-25 17:36:17 +09:00
BeatmapDifficulty.cs Fix remaining issues 2019-02-28 13:31:40 +09:00
BeatmapInfo.cs Fix json decoding being a bit too eager to consume 2019-08-17 15:34:02 +09:00
BeatmapManager_WorkingBeatmap.cs Migrate decoding to line-buffered reader 2019-09-15 01:28:07 +02:00
BeatmapManager.cs Migrate decoding to line-buffered reader 2019-09-15 01:28:07 +02:00
BeatmapMetadata.cs implement video parsing 2019-08-30 23:19:34 +03:00
BeatmapMetrics.cs Move metrics to beatmap set 2019-06-13 16:52:49 +09:00
BeatmapOnlineInfo.cs Move Length out of OnlineInfo 2019-07-07 20:25:36 +03:00
BeatmapProcessor.cs Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
BeatmapSetFileInfo.cs Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
BeatmapSetInfo.cs Convert length retrieved from online to milliseconds 2019-07-09 17:53:34 +03:00
BeatmapSetMetrics.cs Move metrics to beatmap set 2019-06-13 16:52:49 +09:00
BeatmapSetOnlineInfo.cs Remove usings 2019-08-29 12:49:44 +03:00
BeatmapSetOnlineStatus.cs Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
BeatmapStatistic.cs Update icon usage to match framework changes 2019-03-27 19:29:27 +09:00
BeatmapStore.cs Remove incorrect deletion include 2019-05-09 15:13:35 +09:00
BindableBeatmap.cs Cleanups 2019-06-04 11:25:18 +09:00
DifficultyRating.cs Replace DifficultyColouredContainer with a more scalable solution 2019-08-17 15:16:24 +09:00
DummyWorkingBeatmap.cs implement video parsing 2019-08-30 23:19:34 +03:00
IBeatmap.cs Add IBeatmap<T> interface for typed hitobject retrieval 2019-08-28 20:19:22 +09:00
IBeatmapConverter.cs Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
IBeatmapProcessor.cs Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
IWorkingBeatmap.cs Apply naming suggestions 2019-08-31 16:20:33 +03:00
WorkingBeatmap.cs Recreate beatmap video on each consumption 2019-09-14 00:07:06 +09:00