Dean Herbert
e987db37ec
Add grouping of ControlPoints
2019-10-25 19:52:02 +09:00
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
Bartłomiej Dach
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
Andrei Zavatski
6e5cb8a318
implement video parsing
2019-08-30 23:19:34 +03:00
smoogipoo
ac2060f1cf
Throw exceptions and let LegacyDecoder handle them
2019-08-08 14:44:04 +09:00
David Zhao
7bcec31ea3
mention that the event was the type
2019-08-07 17:08:41 +09:00
David Zhao
669c2462ec
Don't consider the type
2019-08-07 16:25:38 +09:00
David Zhao
66b02c0283
log type as well
2019-08-06 12:27:10 +09:00
David Zhao
cd6fe91882
Log error for invalid events
2019-08-06 10:05:21 +09:00
smoogipoo
7e38aabe75
Remove equivalence check from controlpoint parsing
2019-05-21 14:27:41 +09:00
Dean Herbert
92f6f4d21a
Apply same fix to other methods which were missed
2019-05-13 19:04:12 +09:00
Dean Herbert
66ebdbbe4c
Fix control points with same timestamp potentially being parsed incorrectly
2019-05-08 18:13:07 +09:00
Dean Herbert
612db31c38
Apply newline additions
2019-04-01 12:16:32 +09:00
Dean Herbert
8f00f2290a
Log issues
2019-03-13 14:56:41 +09:00
Dean Herbert
241e336c21
Fix break parsing
2019-03-13 14:22:16 +09:00
Dean Herbert
f4c505709a
Use parsing methods in more places
...
Limiting scope to beatmap decoding for this pass. Can expand to skin/storyboard in the future.
2019-03-13 13:56:31 +09:00
Dean Herbert
93b774104a
Fix NaN handling
2019-03-13 11:30:33 +09:00
Dean Herbert
cc09ecbfcf
Increase validation performed on .osu files to avoid hard crashes
2019-03-12 20:31:15 +09:00
Dean Herbert
8617aaa2a7
Update licence header (and remove year)
2019-01-24 17:43:03 +09:00
Dean Herbert
a2b8904b1e
Merge branch 'master' into database-standardize-paths
2018-10-18 16:21:45 +09:00
HoLLy
bb07630743
Merge branch 'master' into database-standardize-paths
2018-10-12 14:08:25 +02:00
smoogipoo
bd99a87298
Use ordinal comparison in LegacyBeatmapDecoder
2018-10-11 17:48:47 +09:00
HoLLy
b35f88b8ba
Standardize AudioFile and BackgroundImage paths
2018-10-09 17:49:18 +02:00
smoogipoo
b7499fa956
Allow TimingControlPoint to be overridden
2018-10-09 11:34:38 +09:00
smoogipoo
551581e5cd
Skip invalid hitobject types, log error instead
2018-08-22 15:59:58 +09:00
smoogipoo
ce77473910
Simplify usage of ConvertHitObjectParser
2018-08-15 10:24:56 +09:00
smoogipoo
b8824a41b5
Fix certain control points not being replaced
2018-08-14 11:44:53 +09:00
Dean Herbert
da8fc0ee5d
ToLower -> ToLowerInvariant
2018-07-25 07:37:05 +02:00
Dean Herbert
84c13174d9
Merge branch 'master' into use-has-flags
2018-07-17 03:50:40 +09:00
morguldir
fc77e01ba9
Fix formatting, make StripComments protected
...
Don't strip comments when calling ParseLine
2018-07-16 16:35:55 +02:00
Dean Herbert
98cddc0c04
Fix some legacy cases
2018-07-16 16:26:37 +09:00
Dean Herbert
dbc538abbe
Use Enum.HasFlag
...
With .NET core 2.0+ this is as efficient as the ugly code we've been using.
2018-07-16 16:18:46 +09:00
morguldir
429306aa87
Fix casing, use ordinal string comparison when stripping comments
2018-07-16 01:54:20 +02:00
morguldir
6c861a1638
Strip comments from everything except metadata
2018-07-16 01:04:41 +02:00
Dean Herbert
44aecdc3a0
Rename method to EquivalentTo
2018-07-05 15:00:02 +09:00
smoogipoo
b664d3ef81
Fix time being a part of controlpoint change comparisons
2018-07-02 13:34:25 +09:00
smoogipoo
3a9a82c80c
Add back legacy custom sample banks
2018-06-28 18:29:12 +09:00
smoogipoo
2882981f9c
Implement and use equality comparers for ControlPoint
2018-06-28 18:28:59 +09:00
Dean Herbert
955a78e76d
Remove OnlineBeatmapSetID from BeatmapInfo
...
It should now be retrieved via the linked BeatmapSetInfo
2018-06-08 15:26:27 +09:00
Dean Herbert
8220e0c79a
Remove OnlineBeatmapSetID from BeatmapMetadata
2018-06-08 12:46:34 +09:00
smoogipoo
8ae2a3696f
Apply platform universal offset at player level
2018-05-28 03:31:46 +09:00
smoogipoo
0f817d18d4
Add explanatory comment
2018-05-16 13:59:51 +09:00
smoogipoo
cf44357bdb
Use a stable sort for hitobjects
2018-05-16 13:30:48 +09:00
Adonais Romero González
06c6f55995
Apply offset to end times on legacy converter
2018-04-30 00:43:32 -07:00
Dean Herbert
32a74f95a5
Normalize all the line endings
2018-04-13 18:26:38 +09:00
smoogipoo
fd9480cfb6
Handle timingpoint FormatException
2018-04-02 20:08:40 +09:00
smoogipoo
d24d81d8a9
De-pluralize some methods
2018-04-02 20:07:18 +09:00
Dean Herbert
62e908e22c
Add default separator character
2018-03-19 20:06:44 +09:00
Dean Herbert
e43de68ad3
Move colour parsing to LegacyDecoder
2018-03-13 19:13:50 +09:00
Dean Herbert
1bcda4930e
Add back beatmap version set
2018-03-12 11:33:12 +09:00
Dean Herbert
217dd2ecdc
Initial push for better decoders
2018-03-09 21:24:15 +09:00
Dean Herbert
7b18e8a5ca
Merge branch 'master' into fix-taiko-conversion
2018-03-06 01:16:47 +09:00
smoogipoo
d44dc1a4f9
Fix SliderMultiplier/SliderTickRate parsing inaccuracy
2018-03-05 16:01:05 +09:00
Dean Herbert
e46f363fdc
Fix failing unit test
2018-03-04 22:46:50 +09:00
Dean Herbert
bc0bc8d459
Add legacy timing offsets
...
These have been in release builds since January, but implemented in a hacky way.
This brings them with a sane implementation.
2018-03-04 21:57:50 +09:00
Dean Herbert
572d3b1316
Move bpm clamping to TimingControlPoint, adjust range to 1-10000bpm
...
In line with stable editor restrictions
2018-02-28 22:53:28 +09:00
Dean Herbert
5b4fef0180
Add bare minimum sanity checking of beatmap input values to make broken maps load
...
Resolves ppy/osu#1988 .
2018-02-28 18:12:24 +09:00
Dean Herbert
968291c61e
Sort hitobjects imported from legacy beatmps
...
Apaprently some ranked maps contain unordered hitobjects. We probably never want to allow for this.
2018-02-28 18:11:28 +09:00
Dean Herbert
4c0259a040
Merge branch 'master' into fix-storyboard-variables
2018-01-09 11:50:03 +09:00
Dean Herbert
37d393bca0
Update licence headers
2018-01-05 20:21:19 +09:00
james58899
0158246ba1
AppVeyor
2018-01-04 19:23:00 +08:00
james58899
dcc4e863ab
move variables to StoryboardDecoder
2018-01-04 19:04:52 +08:00
Dean Herbert
5026c7a95e
SoundControlPoint -> SampleControlPoint
2017-12-23 16:34:34 +09:00
Aergwyn
cc76c58f5f
fall back to .osu file for storyboard if no .osb file is present
...
+ CI fixes
2017-12-02 16:05:39 +01:00
Aergwyn
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
Aergwyn
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
Aergwyn
db50ad794e
CI adjustments
...
- removing unnecessary `using`s
- name Fields/Methods according to rules
- removing unnecessary initializations
2017-12-01 17:58:11 +01:00
Aergwyn
806c0e3b26
restructured OsuLegacyDecoder into LegacyDecoder
...
Beatmap works, Storyboard not...
2017-12-01 17:43:33 +01:00