Commit Graph

35 Commits

Author SHA1 Message Date
e9b8cbb516 Apply other styles. 2019-11-11 20:27:04 +08:00
ccc8aa6fa4 Apply brace style. 2019-11-11 20:13:13 +08:00
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
11eda44d34 Migrate decoding to line-buffered reader
Migrate all usages of StreamReader in the context of decoding beatmaps,
storyboards or skins to the new LineBufferedReader.
2019-09-15 01:28:07 +02:00
7b04fb1690 StoryboardSample -> StoryboardSampleInfo 2019-08-23 14:54:39 +03:00
48716f8f2b Update framework 2019-08-21 13:29:50 +09:00
ac2060f1cf Throw exceptions and let LegacyDecoder handle them 2019-08-08 14:44:04 +09:00
da15e19912 return on storyboard side 2019-08-07 18:40:58 +09:00
7bcec31ea3 mention that the event was the type 2019-08-07 17:08:41 +09:00
66b02c0283 log type as well 2019-08-06 12:27:10 +09:00
cd6fe91882 Log error for invalid events 2019-08-06 10:05:21 +09:00
612db31c38 Apply newline additions 2019-04-01 12:16:32 +09:00
e45c08ad23 Adjust comment 2019-03-29 14:02:19 +09:00
92184adef5 Add stable sorting of storyboard elements 2019-03-26 16:37:52 +09:00
8617aaa2a7 Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
f27bd3ef3e OpenTK -> osuTK 2018-11-20 17:14:59 +09:00
710b0a4664 Remove unnecessary PathSanitise call 2018-10-12 15:30:24 +02:00
df84889646 Handle invalid origins as Anchor.TopLeft 2018-08-22 14:50:03 +09:00
541c4daa81 Use ordinal string comparison in hot paths 2018-08-21 11:10:54 +09:00
e360985d73 Replace variables into the entire line 2018-08-14 18:15:09 +09:00
6c861a1638 Strip comments from everything except metadata 2018-07-16 01:04:41 +02:00
32a74f95a5 Normalize all the line endings 2018-04-13 18:26:38 +09:00
e43de68ad3 Move colour parsing to LegacyDecoder 2018-03-13 19:13:50 +09:00
217dd2ecdc Initial push for better decoders 2018-03-09 21:24:15 +09:00
fa800f0977 fix storyboard path 2018-01-23 18:18:54 +08:00
4c0259a040 Merge branch 'master' into fix-storyboard-variables 2018-01-09 11:50:03 +09:00
37d393bca0 Update licence headers 2018-01-05 20:21:19 +09:00
0158246ba1 AppVeyor 2018-01-04 19:23:00 +08:00
dcc4e863ab move variables to StoryboardDecoder 2018-01-04 19:04:52 +08:00
89fe567496 use FileSafety.PathSanitise 2018-01-03 17:57:24 +08:00
cc76c58f5f fall back to .osu file for storyboard if no .osb file is present
+ CI fixes
2017-12-02 16:05:39 +01:00
c466296b14 reverted split at Decoder, moved logic down
I'm done experimenting, sorry
- `Decoder` only returns a "Beatmap"`Decoder` now
- "Storyboard"`Decoder` is retrieved from a "Beatmap"`Decoder`
- moved parse methods down in the hierarchy where I forgot to do that
- renamed `OsuLegacyDecoderTest` to `LegacyDecoderTest`
2017-12-01 22:05:01 +01:00
a49f3479a2 Split retrieving of beatmap and storyboard decoder
Storyboard works again. Not satisfied with the solution though.
2017-12-01 19:11:52 +01:00
db50ad794e CI adjustments
- removing unnecessary `using`s
- name Fields/Methods according to rules
- removing unnecessary initializations
2017-12-01 17:58:11 +01:00
806c0e3b26 restructured OsuLegacyDecoder into LegacyDecoder
Beatmap works, Storyboard not...
2017-12-01 17:43:33 +01:00