Dean Herbert
8f24ea54ee
Change SamplePoints
to be SortedList
for conformity
2021-09-03 17:11:12 +09:00
Dean Herbert
2b9157987e
Fix regression in SampleControlPoint
add logic
2021-09-03 17:11:12 +09:00
Dean Herbert
d587dc6203
Populate new approach rate where required
2021-09-03 17:11:12 +09:00
Dean Herbert
a3d9ab1e2e
Move approach rate to EffectControlPoint
2021-09-03 16:58:16 +09:00
Dean Herbert
4eb09ea1a9
Update decoder to also extract DifficultyControlPoint
s from HitObject
s
2021-09-03 16:58:16 +09:00
Dean Herbert
db3fc1d4af
Move DifficultyControlPoint
s list to LegacyControlPointInfo
2021-09-03 16:58:16 +09:00
Dan Balasescu
6c649b7bbe
Merge branch 'master' into no-more-sample-control-points-info
2021-09-02 18:09:05 +09:00
Dean Herbert
f0b128b6ec
Merge pull request #14592 from frenzibyte/cleanup-tooltips
...
Update remaining tooltip implementations to use generics
2021-09-01 17:03:59 +09:00
Dean Herbert
edf29e405b
Merge pull request #14581 from bdach/setup-screen-countdown-settings
...
Add countdown settings to setup screen
2021-09-01 15:35:46 +09:00
Dan Balasescu
e715b21ca7
Merge pull request #14586 from peppy/remove-ijsonserializable
...
Remove IJsonSerializable interface
2021-09-01 14:17:32 +09:00
Bartłomiej Dach
1e4fa87648
Merge branch 'master' into setup-screen-countdown-settings
2021-08-31 22:43:18 +02:00
Salman Ahmed
505824d8ea
Constrain difficulty icon tooltip to internal
accessibility"
...
This reverts the reverted commit cd356b8eae
.
Sorry for the revert-unrevert, rushly pushed without realizing it
doesn't even build.
2021-08-31 21:16:17 +03:00
Salman Ahmed
cd356b8eae
Revert "Constrain difficulty icon tooltip to internal
accessibility"
...
This reverts commit 4a590a041c
.
2021-08-31 20:57:47 +03:00
Salman Ahmed
4a590a041c
Constrain difficulty icon tooltip to internal
accessibility
2021-08-31 20:57:36 +03:00
Salman Ahmed
da7ff4b160
Update remaining tooltip implementations to use generics
2021-08-31 20:01:13 +03:00
Dean Herbert
a254624373
Avoid performing beatmap metadata lookups when entering the editor
...
If none of the lookup parameters are available, skip the lookup
completely.
2021-08-31 17:18:05 +09:00
Dean Herbert
d988aa1680
Actually serialise SampleControlPoint
s along with HitObject
s
2021-08-31 15:14:03 +09:00
Dean Herbert
448c58c35d
Remove unnecessary variable discard
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-08-31 15:08:07 +09:00
Dean Herbert
9fa8bee094
Remove outdated TODO
2021-08-31 14:51:19 +09:00
Dean Herbert
ce0d7cce2d
Merge branch 'remove-ijsonserializable' into no-more-sample-control-points-info
2021-08-31 14:40:54 +09:00
Dean Herbert
c25ab6835c
Remove IJsonSerializable interface
...
Was pretty pointless and made it hard to use the custom serialisation
terms arbitrarily in tests.
2021-08-31 14:39:20 +09:00
Bartłomiej Dach
b43ee2d61c
Add descriptions to enum members
2021-08-30 22:51:42 +02:00
Dean Herbert
a2cff75fc0
Fix editor not cloning control points as expected
2021-08-30 21:55:08 +09:00
Dan Balasescu
b95da3ca27
Merge pull request #14576 from peppy/update-framework
...
Update framework
2021-08-30 21:09:58 +09:00
Dean Herbert
1aaea7011a
Fix early return causing event loss in case of multiple control points in group
2021-08-30 18:33:05 +09:00
Dean Herbert
015df282fe
Simplify copy operations
2021-08-30 18:32:55 +09:00
Dean Herbert
d35c4da906
Add new control point to legacy regeneration logic
2021-08-30 17:14:53 +09:00
Dean Herbert
6ee4a6526c
Don't block sample points from still being added to ControlPointInfo
2021-08-30 17:14:53 +09:00
Dean Herbert
6fd24a5d92
Remove redundant null coalesce
2021-08-30 17:14:53 +09:00
Dean Herbert
ccacf56dd8
Move to legacy namespace
2021-08-30 17:14:53 +09:00
Dean Herbert
7257aae7f2
Move samples to LegacyControlPointInfo
2021-08-30 17:14:53 +09:00
Dean Herbert
da7a871afa
Update inline comment to point to new variable location
...
Co-authored-by: PercyDan <50285552+PercyDan54@users.noreply.github.com>
2021-08-30 16:27:24 +09:00
Dean Herbert
fa2bf42188
Update tooltip implementations
2021-08-30 16:05:00 +09:00
Dean Herbert
6a6dac609c
Fix instability of taiko double conversion
...
Until now, the taiko speed multiplier was potentially applied more than
once if conversion was run multiple times.
2021-08-30 15:30:18 +09:00
Dean Herbert
ee49305cad
Move taiko legacy speed multiplier to osu.Game
project
...
Allows it to be used in local case in `LegacyBeatmapEncoder`.
2021-08-30 15:13:31 +09:00
Salman Ahmed
e374ef163d
Update localisable formattable extensions usages inline with framework change
2021-08-29 15:00:28 +03:00
Dean Herbert
6dcd9427ac
Remove bindable usage in PathControlPoint
...
This is quite a breaking change, but I think it is beneficial due to the large amount of usage of this class.
I originally intended just to remove the allocations of the two delegates handling the `Changed` flow internally, but as nothing was really using the bindables for anything more than a general "point has changed" case, this felt like a better direction.
2021-08-26 12:33:53 +09:00
Dean Herbert
414457ba57
Add basic xmldoc explaining CountdownOffset
2021-08-25 13:24:52 +09:00
Bartłomiej Dach
a6c2cbd2e5
Add countdown settings to beatmap info model
2021-08-24 21:55:10 +02:00
Dan Balasescu
dfd61e413a
Merge branch 'master' into difficulty-cache-difficulty-adjust
2021-08-24 12:08:52 +09:00
Dean Herbert
d17f7b5c8b
Side WidescreenStoryboard
to on by default for new beatmaps
2021-08-23 17:40:41 +09:00
Bartłomiej Dach
d602dc9d90
Enable epilepsy warning setting persistence in encoder
2021-08-22 17:43:20 +02:00
Bartłomiej Dach
995338029c
Fix difficulty cache lookups sharing underlying mod instances
...
`DifficultyCacheLookup`s were storing raw `Mod` instances into their
`OrderedMods` field. This could cause the cache lookups to wrongly
succeed in cases of mods with settings. The particular case that
triggered this fix was Difficulty Adjust.
Because the difficulty cache is backed by a dictionary, there are two
stages to the lookup; first `GetHashCode()` is used to find the
appropriate hash bucket to look in, and then items from that hash bucket
are compared against the key being searched for via the implementation
of `Equals()`.
As it turns out, the first hashing step ended up being the saving grace
in most cases, as the hash computation included the values of the mod
settings. But the Difficulty Adjust failure case was triggered by the
quirk that `GetHashCode(0) == GetHashCode(null) == 0`.
In such a case, the `Equals()` fallback was used. But as it turns out,
because the `Mod` instance stored to lookups was not cloned and
therefore potentially externally mutable, it could be polluted after
being stored to the dictionary, and therefore breaking the equality
check. Even though all of the setting values were compared, the hash
bucket didn't match the actual contents of the lookup anymore (because
they were mutated externally, e.g. by the user changing the mod setting
values in the mod settings overlay).
To resolve, clone out the mod structure before creating all difficulty
lookups.
2021-08-21 15:50:33 +02:00
Dean Herbert
77149044a5
Allow intro screen to retrieve beatmap even if rulesets is not loaded
2021-08-20 19:43:48 +09:00
Salman Ahmed
6d57a240ac
Add animation support for the star rating display
2021-08-19 07:17:43 +03:00
Salman Ahmed
102320f8ae
Merge branch 'master' into mod-settings-difficulty-cache
2021-08-19 06:35:13 +03:00
Salman Ahmed
d2df09432f
Center the star rating display text rather than left
2021-08-18 11:49:33 +03:00
Salman Ahmed
5e91ec73e3
Handle star rating range display sizing
2021-08-18 11:36:27 +03:00
Dean Herbert
9d2664cbb1
Merge branch 'master' into star-rating-display-v2
2021-08-18 17:22:33 +09:00
Salman Ahmed
74d6c26520
Refactor star rating display layout with flexibility in mind
2021-08-18 11:03:35 +03:00
Salman Ahmed
32ba525555
Track changes to mod settings in beatmap difficulty cache with 100ms debouncing
2021-08-17 05:46:05 +03:00
Salman Ahmed
0291cd5ae2
Consider mod equality in difficulty cache lookup rather than acronym
2021-08-17 04:27:43 +03:00
Bartłomiej Dach
e744629a41
Fix broken obsoletion message
2021-08-16 01:01:56 +02:00
Bartłomiej Dach
6108451449
Retrieve separated skin instance from working beatmap for editing
2021-08-15 21:18:09 +02:00
Bartłomiej Dach
7c88a1c6de
Add a way to change custom combo colours via IHasComboColours
...
`IHasComboColours` was already mutable (via a strange
`AddComboColours()` method) and exposing a straight list is easier to
work with. `IHasCustomColours` is also similarly externally mutable (in
a way which is not easily removable).
2021-08-15 20:06:06 +02:00
Salman Ahmed
b01893d3f2
Merge branch 'master' into star-rating-display-v2
2021-08-06 13:51:34 +03:00
Dean Herbert
7d670c6d35
Fix gap in fill colour
2021-08-06 18:05:24 +09:00
Salman Ahmed
b63d472594
Adjust font size to match designs
...
Looks silly when using `12f`, I've added a todo comment so that this specific case does not get forgotten when CSS-compatible font sizing gets supported.
The todo comment may not be 100% required but very unsure about silently changing it and forgetting about it.
2021-08-04 18:19:37 +03:00
Salman Ahmed
b2332eb5b3
Use new difficulty colours permanently
2021-08-04 18:19:37 +03:00
Salman Ahmed
284fa49646
Bring margins of components closer to existing designs
2021-08-04 18:19:28 +03:00
Salman Ahmed
42370e48ec
Disable shadow on star display text
2021-08-04 18:19:28 +03:00
Salman Ahmed
d4399f10f9
Merge both variants of the star rating display
2021-08-04 18:19:28 +03:00
Salman Ahmed
14da5ab813
Remove defined size from the star rating display
2021-08-04 17:12:20 +03:00
Salman Ahmed
95b134f3d8
Use OsuColour.Orange1
instead of pure yellow
2021-08-04 17:12:20 +03:00
Salman Ahmed
19d54ee751
Update light background handling to Color4.Yellow
instead
...
Confirmed to be the way forward in
https://github.com/ppy/osu-web/pull/7855#issuecomment-880959644 .
2021-08-04 17:12:20 +03:00
Salman Ahmed
a01402664f
Add redesigned star rating display
...
Matching the same design as the one in the latest figma designs.
2021-08-04 17:12:20 +03:00
Salman Ahmed
9a5e052dc0
Use star difficulty colour spectrum game-wide
2021-08-03 15:02:18 +03:00
Salman Ahmed
3409bc6b27
Update mapper usages with LocalisableDescription
2021-07-31 01:47:14 +03:00
Dean Herbert
50a2abbe7f
Merge pull request #12683 from frenzibyte/legacy-beatmap-combo-offset
...
Apply combo offsets "colour hax" only on beatmap skins
2021-07-23 14:30:18 +09:00
Lucas A
ea4f9b2ac7
Localise beatmap online status pill.
2021-07-21 13:15:07 +02:00
Dean Herbert
399c3b0be8
Rename property, reword xmldoc and improve readability of update code
2021-07-21 17:32:56 +09:00
Salman Ahmed
9d92b795fa
Revert making ComboOffset
s legacy and define BeatmapSkinComboIndex
instead
2021-07-20 14:15:43 +03:00
Salman Ahmed
554652b033
Merge branch 'refactor-combo-colour-retrieval' into legacy-beatmap-combo-offset
2021-07-20 10:11:52 +03:00
Dan Balasescu
f3bcaf7f11
Merge pull request #13929 from peppy/i-deep-cloneable
...
Create a deep clone of score for score submission purposes
2021-07-19 21:58:27 +09:00
Dean Herbert
3c028ce05c
Add IDeepCloneable
interface and update existing CreateCopy
methods to use it
2021-07-19 12:54:17 +09:00
ekrctb
7f432665e5
Preserve Y position of hit objects in osu!catch
2021-07-14 14:38:38 +09:00
Dan Balasescu
6b76c54aee
Merge pull request #13756 from PercyDan54/playlist-empty-romanised
...
Fix playlist item displays empty string if no unicode title is present
2021-07-05 13:53:50 +09:00
PercyDan54
12371f7424
Fix playlist item displays as empty string if no unicode title is present
2021-07-04 08:09:38 +08:00
Dean Herbert
0be75cc4ed
Fix incorrect base
call causing import optimisation to not work
2021-07-03 22:35:46 +09:00
Dan Balasescu
697b07acb1
Merge branch 'master' into fix-beatmap-import-fk-failure
2021-06-29 11:36:31 +09:00
Dan Balasescu
92fcf90768
Merge branch 'master' into import-early-checksum-abort
2021-06-28 19:29:08 +09:00
Dean Herbert
90b87cbb9e
Add back unidirectional online id check
2021-06-28 10:11:27 +09:00
Dean Herbert
9a96cd4a1d
Revert "Remove comparison of online beatmap IDs during dedupe checks"
...
This reverts commit 15af28d2a0
.
2021-06-28 09:54:18 +09:00
Dean Herbert
15af28d2a0
Remove comparison of online beatmap IDs during dedupe checks
2021-06-27 14:48:57 +09:00
Dean Herbert
46f8100f43
Remove overly verbose logging during beatmap imports
2021-06-27 14:29:02 +09:00
Dean Herbert
dcba7bf779
Fix import flow potentially hitting foreign key constraint
2021-06-23 17:34:56 +09:00
ekrctb
e1b2c63e09
Add IApplicableToBeatmapProcessor
mod interface
2021-06-23 14:46:30 +09:00
Dean Herbert
5944c45f55
Specify types explicitly and don't handle non-nullable values with fallbacks
2021-06-16 16:24:30 +09:00
smoogipoo
6be41e497a
Fix possible nullref in difficulty recommender
2021-06-16 11:27:38 +09:00
Bartłomiej Dach
375f64ffd1
Check empty string more explicitly in IsRomanised()
...
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-06-11 06:38:53 +02:00
Bartłomiej Dach
e41a5a0fcd
Add romanised author & title fields
2021-06-10 22:17:45 +02:00
Dean Herbert
00b3eea840
Merge branch 'legacy-skin-default-fallback' into fix-skin-sample-lookup
2021-05-31 21:39:04 +09:00
Dean Herbert
17fa2426d4
Merge branch 'master' into legacy-skin-resource-improvements
2021-05-31 19:36:09 +09:00
Dean Herbert
b16d10bd95
Provide game-wide resources via IStorageResourceProvider
2021-05-31 18:57:47 +09:00
Dean Herbert
675fe37446
Change check order around to ensure re-fetches which return no results don't nullref
2021-05-31 18:35:18 +09:00
Dean Herbert
de0e51a81d
Merge branch 'master' into fix-skin-sample-lookup
2021-05-31 15:27:39 +09:00
Dean Herbert
06bd696cc2
Remove previous
consumption logic in GetWorkingBeatmap
...
This should not be required since the introduction of `workingCache`,
which does the same thing in a more global way.
2021-05-31 14:11:58 +09:00
Bartłomiej Dach
ab077c6656
Merge branch 'master' into non-nullable-beatmapset-files
2021-05-31 00:10:03 +02:00
Bartłomiej Dach
78213e09d4
Merge branch 'master' into editor-exit-stability
2021-05-30 23:03:50 +02:00
Dean Herbert
dac1a98d8a
Merge branch 'master' into fix-skin-sample-lookup
2021-05-30 15:19:47 +09:00
Dean Herbert
8652ac05db
Merge branch 'editor-exit-stability' into non-nullable-beatmapset-files
2021-05-28 18:58:35 +09:00
Dean Herbert
ee5eb9576f
Fix completely wrong conditional logic
2021-05-28 18:38:50 +09:00
Dean Herbert
581a86b91a
Revert "Revert "Fix editor tests failing due to empty files being specified""
...
This reverts commit 1af684c4b2
.
2021-05-28 14:33:06 +09:00
Dean Herbert
41733af0ed
Revert "Revert "Make BeatmapSetInfo.Files
non-nullable""
...
This reverts commit 9c4f39e968
.
2021-05-28 14:33:05 +09:00
Dean Herbert
b349ff8693
Revert "Add temporary accounting for tests with null files"
...
This reverts commit e52c0a34f8
.
2021-05-28 14:33:04 +09:00
Dean Herbert
f1b5aced6f
Merge branch 'master' into editor-exit-stability
2021-05-28 14:32:32 +09:00
Dean Herbert
e52c0a34f8
Add temporary accounting for tests with null files
2021-05-28 14:31:26 +09:00
Dean Herbert
9c4f39e968
Revert "Make BeatmapSetInfo.Files
non-nullable"
...
This reverts commit c24712642c
.
2021-05-28 14:15:28 +09:00
Dean Herbert
1af684c4b2
Revert "Fix editor tests failing due to empty files being specified"
...
This reverts commit fdbd421040
.
2021-05-28 14:15:28 +09:00
Dean Herbert
b13b732e02
Remove incorrect DefaultSkin
usage
2021-05-27 14:50:56 +09:00
Dean Herbert
14a4095140
Merge branch 'master' into beatmap-skin
2021-05-26 18:39:47 +09:00
Dean Herbert
29e1737f0d
Merge branch 'master' into mbd-beatmap-set-cover
2021-05-24 15:51:03 +09:00
Salman Ahmed
4f6de6fdc6
Implement GetSkin()
for other working beatmaps
2021-05-21 20:21:29 +03:00
Salman Ahmed
318e5fc60b
Mark WorkingBeatmap.GetSkin()
as abstract
2021-05-21 20:14:26 +03:00
Dean Herbert
c24712642c
Make BeatmapSetInfo.Files
non-nullable
2021-05-20 17:39:52 +09:00
Dean Herbert
fdbd421040
Fix editor tests failing due to empty files being specified
2021-05-20 17:09:55 +09:00
Dean Herbert
7980bdd384
Revert incorrectly changed requery code
2021-05-20 15:41:58 +09:00
Salman Ahmed
825d61e22c
Separate default beatmap skins from DefaultSkin
2021-05-19 12:06:10 +03:00
Dean Herbert
a639132825
Avoid doing any re-fetch on beatmap from test scenes
2021-05-19 17:58:28 +09:00
Dan Balasescu
ce7c503e6e
Merge branch 'master' into playlist-unicode
2021-05-17 11:47:10 +09:00
Dean Herbert
dc56250a3c
Merge branch 'master' into player-loader-star-rating
2021-05-15 15:39:57 +09:00
Salman Ahmed
e0728a6e19
Make BeatmapDifficultyCache.GetDifficultyAsync
virtual
2021-05-14 15:52:36 +03:00
Dean Herbert
32ff406289
Add database tracking of beatmap creator user_id
s
2021-05-14 15:40:29 +09:00
Dean Herbert
77e422409c
Add SkinInfo.InstantiationInfo
to allow creating different skin types
2021-05-11 23:37:06 +09:00
Salman Ahmed
c7325f0f77
Add missing load delay
...
That was a bad one... `ModelBackedDrawable` has a default of 0ms load delay, while previously the wrapper created for beatmap set cover used default 500ms, this change is bringing the load delay back, to avoid firing hundreds of web requests just when doing a quick long scroll on beatmap listing.
2021-05-07 08:09:02 +03:00
Salman Ahmed
283488ea53
Use TransformImmediately
instead at beatmap listing search control
...
Applies two changes:
- Use `TransformImmediately` which achieves the same wanted transition behaviour without any issues.
- Move the transition behaviour override into `BeatmapListingSearchControl` in a nested subclass of `UpdateableBeatmapSetCover`.
2021-05-07 03:36:32 +03:00
Salman Ahmed
6fb9eb8b33
Move legacy beatmap combo offset to osu! processor
...
Better suited there, I intiailly wanted the whole legacy interface to reside in `osu.Game.Rulesets.Osu` but it's required in `ConvertHitObjectParser` and that's in the main game project, so had to leave the interface as-is for now.
2021-05-05 14:24:14 +03:00
Salman Ahmed
cd6d070b4a
Consider "combo offsets" as legacy logic and separate from combo information
2021-05-05 07:43:08 +03:00
Bartłomiej Dach
32b3ea70b9
Fix both covers showing if cover is not fully opaque
2021-05-04 21:12:50 +02:00
Bartłomiej Dach
f52375eed2
Merge branch 'master' into mbd-beatmap-set-cover
2021-05-03 15:58:13 +02:00
Dean Herbert
2e24b69d62
Merge pull request #12617 from Joehuu/fix-pp-column-approved-maps
...
Fix approved maps not displaying pp column on score table
2021-05-02 13:27:39 +09:00
Justus Franklin Tumacder
0d077b7a5d
Fix GetClosestBeatDivisor returning the wrong divisor
2021-05-01 14:13:42 +08:00
Joseph Madamba
786ab163f6
Rename extension and move to bottom of file
2021-04-30 12:40:16 -07:00
Dean Herbert
eeb66a955e
Merge branch 'master' into mbd-beatmap-set-cover
2021-04-30 08:14:33 +09:00
Joseph Madamba
cfbf95b433
Add HasPerformancePoints extension method
2021-04-29 14:11:35 -07:00
Dean Herbert
859898d98f
Refactor lookup methods to avoid linq and reduce TimingPointAt
calls
2021-04-28 17:16:05 +09:00
Dean Herbert
c5186b6a69
Revert return values to non-rounded doubles
2021-04-28 16:59:49 +09:00
Dean Herbert
f3c7694eeb
Rename methods to match generally how these find-methods are named elsewhere
2021-04-28 16:57:52 +09:00
Dean Herbert
48d6c9ac4b
Move snap/divisor helper methods to inside ControlPointInfo
2021-04-28 16:47:30 +09:00
Naxess
217ff8238e
Add snapping time comment
2021-04-27 01:23:03 +02:00
Naxess
6d5883abcb
Return result of local variable instead
2021-04-27 01:19:38 +02:00
Naxess
7b9ed924be
Rename snapping methods
...
Further separates them from `IBeatSnapProvider`'s `SnapTime`, and groups them together more, to prevent confusion between the two interfaces.
Also changes the xmldoc of the reference time to that of `IBeatSnapProvider` for consistency.
2021-04-26 16:07:30 +02:00
Naxess
049e42fa85
Move snapping responsibility to IBeatmap
...
Seems `EditorBeatmap` already implements a different kind of `SnapTime` from `IBeatSnapProvider`, so method names here aren't great.
This is very similar to what https://github.com/ppy/osu/pull/12558 is doing, so may need to do some duplicate resolution later, especially surrounding `ClosestBeatSnapDivisor`.
Worth noting that this change makes 1/7, 1/5, etc unsupported for now, as we now rely on `BindableBeatDivisor.VALID_DIVISORS`.
2021-04-26 05:07:24 +02:00
Naxess
e9dfa2860a
Add xmldoc note about path being relative
2021-04-20 13:44:06 +02:00
Naxess
d7a81471c8
Add xmldoc to GetPathForFile
2021-04-20 13:40:38 +02:00
Naxess
0e6b66f457
Merge branch 'master' into bg-audio-quality-checks
2021-04-20 02:36:13 +02:00
Naxess
1478bcfa8e
Improve xmldoc consistency
2021-04-20 02:30:27 +02:00
Naxess
67e4fe4284
Add xmldoc to GetStream
2021-04-20 02:28:38 +02:00
Naxess
f168247254
Add Track
as a property to IWorkingBeatmap
...
This is implemented by `WorkingBeatmap` already, and is much better to use than loading the track every time we need it.
2021-04-20 01:35:41 +02:00
Bartłomiej Dach
d5829fe638
Merge branch 'master' into playlist-unicode
2021-04-19 19:24:04 +02:00
Dean Herbert
a10a8680d0
Add new display for timing row attributes
2021-04-19 16:23:06 +09:00
PercyDan54
38a7c590c4
Make versionString private
2021-04-18 20:57:25 +08:00
PercyDan54
646403b826
Fix CI errors
2021-04-18 10:54:42 +08:00
PercyDan54
cfaaf2e83e
Add ToRomanisableString()
2021-04-18 09:52:25 +08:00
Naxess
bf8789528a
Add GetStream
to IWorkingBeatmap
2021-04-18 01:13:57 +02:00
Naxess
b36da2664c
Add GetPathForFile
to BeatmapSetInfo
...
This is used in several places, and so should probably have a function rather than remaining as duplicated code.
Also applies this together with the previous commit to `BeatmapManagerWorkingBeatmap`.
2021-04-17 17:49:10 +02:00
Naxess
400f8b3938
Add GetStream
to IWorkingBeatmap
...
This is necessary to obtain the filesize of the audio and background files.
2021-04-17 17:47:13 +02:00
Dean Herbert
be08b9d1ef
Combine logic of Difficulty and Timing pieces where feasible
2021-04-14 20:55:34 +09:00
Dean Herbert
a8df2388eb
Update design for TimingControlPoint
2021-04-14 20:11:47 +09:00
Dean Herbert
b5954a55ad
Remove empty <returns> xmldoc
2021-04-12 17:46:14 +09:00
Dean Herbert
1dbc7e821e
Merge branch 'master' into add-slider-whistle
2021-04-09 17:11:48 +09:00
smoogipoo
9b0ce2999f
Fix legacy encoder
2021-04-09 15:28:42 +09:00
smoogipoo
8293b06c0a
Remove obsolete code
2021-04-09 13:56:58 +09:00
Leon Gebler
dd902441b0
Add tests for consecutive perfect-curve segments
2021-04-06 13:32:17 +02:00
Leon Gebler
d81f270e21
Always encode perfect curves as explicit segments
2021-04-06 13:29:31 +02:00
smoogipoo
a2544100d4
Fix floating point error in slider path encoding
2021-04-06 14:10:59 +09:00
smoogipoo
d0510222ae
Fix legacy beatmap encoding
2021-04-05 19:59:54 +09:00
PercyDan54
dde255980b
Fix formatting
2021-04-03 12:45:42 +08:00
PercyDan54
bd7da9eb39
Make beatmap title use unicode
2021-04-03 12:43:17 +08:00
Dean Herbert
6d4d574a65
Fix exported replay filenames not having full metadata
2021-04-02 14:10:25 +09:00
Dean Herbert
4f8edcd336
Don't strip comments from metadata during parsin
2021-03-25 13:35:54 +09:00
Bartłomiej Dach
a16c0641b2
Revert EF Core to version 2.2
...
This reverts commit f3faad74d5
, reversing
changes made to 712e7bc7bf
.
Several issues arose after migrating to 5.0, including, but possibly not
limited to, performance regressions in song select, as well as failures
when attempting to save beatmaps after metadata changes in the editor.
2021-03-21 11:05:15 +01:00
Dean Herbert
0195d654ca
Increase the precision of speed multiplier to match osu-stable
2021-03-19 17:09:49 +09:00
Dan Balasescu
53ae24db9b
Merge pull request #12058 from peppy/fix-whitespace-in-ini
...
Fix skin parser not stripping whitespace before parsing
2021-03-18 18:46:28 +09:00
Dean Herbert
5b0d75ee56
Only trim trailing spaces to avoid breakage in storyboard parsing
2021-03-18 16:30:30 +09:00
Dean Herbert
bb3c3f302a
Fix skin parser not stripping whitespace before parsing
2021-03-18 15:36:11 +09:00
Dean Herbert
eda891223c
Start the editor with empty artist/creator/difficulty name fields
2021-03-17 16:47:12 +09:00
Dean Herbert
f3faad74d5
Merge pull request #12003 from UselessToucan/ef_core_5
2021-03-15 15:05:32 +09:00
Dean Herbert
6d4c1ba2ae
Fix a couple of new inspections introduced in Rider EAPs
2021-03-15 13:35:08 +09:00
Roman Kapustin
0a1e325fc7
Extract requerying of navigational properties from DbContext
2021-03-14 19:34:53 +03:00
Roman Kapustin
47b80d2474
Workaround InvalidOperation exceptions
2021-03-11 20:51:54 +03:00
Dean Herbert
b1cd01ceb8
Apply ConfigureAwait changes to game side
2021-03-08 14:36:35 +09:00
Dean Herbert
103dd4a6ce
Remove WorkingBeatmap's finalizer
2021-03-02 16:14:43 +09:00
Dan Balasescu
46ea0f44eb
Merge branch 'master' into beatmap-difficulty-cache-nullable
2021-02-25 22:52:15 +09:00
Dean Herbert
5fa9bf61b6
Update xmldoc
2021-02-25 16:22:40 +09:00
Dean Herbert
03771ce8ec
Allow determining a BeatmapDifficultyCache's bindable return's completion state via nullability
2021-02-25 16:19:01 +09:00
smoogipoo
dff1d80f39
Update HasFlag usages to HasFlagFast
2021-02-25 15:38:56 +09:00
Dean Herbert
dfedea9ea2
Move preview point logic to a specific method in WorkingBeatmap
2021-02-18 14:55:44 +09:00
Dean Herbert
e7308193e7
Add xmldoc explaining how PreviewTime is intended to work
2021-02-18 13:03:29 +09:00
Dean Herbert
a080a9bdbc
Merge pull request #11603 from Game4all/handle-stable-imports-custom-songs-folder
...
Handle beatmap import from a stable installation with a custom Songs directory
2021-02-12 21:42:36 +09:00
smoogipoo
a1be3c8bfd
Fix header background being invisible in multiplayer/playlists
2021-02-12 15:27:37 +09:00
Dean Herbert
5f23bd7259
Revert most of the changes to ArchiveModeManager by using better code
2021-02-12 12:48:32 +09:00
smoogipoo
18e3f8c233
Sort beat lengths rather than linear search
2021-02-08 19:03:19 +09:00
smoogipoo
b40b159acb
Round beatlength
2021-02-08 18:52:50 +09:00
smoogipoo
69ca440ae5
Merge branch 'master' into more-accurate-most-common-bpm
2021-02-08 18:40:58 +09:00
Bartłomiej Dach
b9a49d5589
Coerce undefined animation loop types to Forever
2021-01-31 15:43:58 +01:00
Dean Herbert
16f3d1815f
Fix SQLite exception thrown is a beatmap lookup is attempted without an OnlineBeatmapID present
...
It turns out the SQLite API isn't smart enough to handle nullables
directly, so we need to help it out a bit.
Stops the following from being thrown:
```
System.InvalidOperationException: Value must be set.
at Microsoft.Data.Sqlite.SqliteParameter.Bind(sqlite3_stmt stmt) = 3
at
at Microsoft.Data.Sqlite.SqliteParameterCollection.Bind(sqlite3_stmt
stmt) = 3 at
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior
behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
at
osu.Game.Beatmaps.BeatmapManager.BeatmapOnlineLookupQueue.checkLocalCache(BeatmapSetInfo
set, BeatmapInfo beatmap) in
/Users/dean/Projects/osu/osu.Game/Beatmaps/BeatmapManager_BeatmapOnlineLookupQueue.cs:line
166 = 166
```
2021-01-29 19:53:57 +09:00
Dean Herbert
c3d4044017
Avoid using Dapper to fix iOS compatibility of beatmap lookup cache
2021-01-28 16:53:56 +09:00
Lucas A
383c40b992
Address remaining reviews suggestions.
2021-01-26 20:35:42 +01:00
Lucas A
9f9206726a
Fix typos.
2021-01-26 18:11:54 +01:00
Dean Herbert
4ac362ee1a
Move cloning local to editor
2021-01-25 18:29:00 +09:00
Dean Herbert
f054b38105
Merge branch 'master' into revert-beatmap-controlpointinfo-cloning
2021-01-25 18:25:53 +09:00
Lucas A
51d4da565c
Fix ArchiveModelManagers lookup paths.
2021-01-24 22:25:49 +01:00
Salman Ahmed
acfb2d2980
Refactor beatmap set covers into using ModelBackedDrawable<T>
2021-01-24 00:32:33 +03:00
Salman Ahmed
d83abfa7d2
Add test scene with failing test case
2021-01-24 00:32:20 +03:00
Dean Herbert
edb6d3907b
Merge pull request #11472 from frenzibyte/explicit-beatmap-markers
...
Add explicit content markers to beatmap panels and overlay
2021-01-17 21:44:10 +09:00
Dean Herbert
d6e6b4bbee
Revert forced cloning of ControlPointInfo
...
This reverts commit 3c3e860dbc
.
Closes https://github.com/ppy/osu/issues/11491 .
2021-01-15 17:34:59 +09:00
smoogipoo
24e991a5ef
Actually return beat length and not BPM
2021-01-15 14:35:09 +09:00
smoogipoo
c6e9a6cd5a
Make most common BPM more accurate
2021-01-15 14:28:49 +09:00
Dean Herbert
8a0b975d71
Fix deadlock scenario when calculating fallback difficulty
...
The previous code would run a calcaulation for the beatmap's own ruleset
if the current one failed. While this does make sense, with the current
way we use this component (and the implementation flow) it is quite unsafe.
The to the call on `.Result` in the `catch` block, this would 100%
deadlock due to the thread concurrency of the `ThreadedTaskScheduler`
being 1. Even if the nested run could be run inline (it should be), the
task scheduler won't even get to the point of checking whether this is
feasible due to it being saturated by the already running task.
I'm not sure if we still need this fallback lookup logic. After removing
it, it's feasible that 0 stars will be returned during the scenario that
previously caused a deadlock, but I don't necessarily think this is
incorrect. There may be another reason for this needing to exist which
I'm not aware of (diffcalc?) but if that's the case we may want to move
the try-catch handling to the point of usage.
To reproduce the deadlock scenario with 100% success (the repro
instructions in the linked issue aren't that simple and require some
patience and good timing), the main portion of the lookup can be changed
to randomly trigger a nested lookup:
```
if (RNG.NextSingle() > 0.5f)
return GetAsync(new
DifficultyCacheLookup(key.Beatmap, key.Beatmap.Ruleset,
key.OrderedMods)).Result;
else
return new StarDifficulty(attributes);
```
After switching beatmap once or twice, pausing debug and viewing the
state of threads should show exactly what is going on.
2021-01-14 18:25:34 +09:00
Salman Ahmed
e8daea91d2
Add online beatmap "explicit content" property
2021-01-13 12:13:14 +03:00
smoogipoo
9a22df2b88
Fix BPM multiplier not working in all cases
2021-01-12 17:50:22 +09:00
Dean Herbert
3c3e860dbc
Move ControlPointInfo copying to base Beatmap.Clone method (and remove setter)
2021-01-07 23:52:04 +09:00
Dean Herbert
00dc98e3ab
Make legacy control point's BpmMultiplier setter private again
2021-01-07 19:06:52 +09:00
Dean Herbert
69ac22dd7f
Fix incorrectly copy pasted xmldoc
2021-01-07 19:06:10 +09:00
Dean Herbert
31a6e9b860
Remove unused using
2021-01-05 14:24:49 +09:00
Dean Herbert
afab35a31a
Fix missing copy implementation in LegacySampleControlPiont
2021-01-05 13:41:31 +09:00
Dean Herbert
caa88c6100
Use CreateCopy instead of Clone interface
...
I was going for conformity by using the IClonable interface, but it
doesn't look like we use it anywhere else in the project.
2021-01-05 13:13:52 +09:00
Dean Herbert
ba4e411422
Clone and copy ControlPointInfo when retrieving a playable beatmap
2021-01-04 16:37:07 +09:00
Dean Herbert
d7279dab40
Merge pull request #11226 from peppy/fix-legacy-skin-texture-loader-store
...
Fix incorrectly provided texture loader store to skins
2020-12-23 16:41:01 +09:00
Dean Herbert
807c1ecd1f
Refactor recommendation iteration code to read better
2020-12-22 14:57:32 +09:00
Dean Herbert
8cc2ed3fae
Move from OsuGameBase to OsuGame
...
Also moves to a more suitable namespace.
2020-12-22 14:28:27 +09:00
Dean Herbert
85518b4d99
Enforce non-null for BeatmapManager WorkingBeatmap resources
2020-12-22 12:06:10 +09:00
Dean Herbert
a97a2b2a66
Add nullability to BeatmapManager's GameHost reference
2020-12-22 12:03:25 +09:00
Dean Herbert
10c2745682
Add region specifications around implicit interface implementations
2020-12-22 12:01:09 +09:00
Dean Herbert
a5bcf1dc20
Expose resources to skin via interface (and share common pieces with beatmap)
2020-12-21 15:18:52 +09:00
Dean Herbert
0ffbe12fcc
Expose resources to beatmaps in a saner way
2020-12-21 14:22:34 +09:00
Dean Herbert
7c804be4d3
Rename textureStore to make its purpose more clear
2020-12-21 14:06:33 +09:00
Dean Herbert
a35060ea7a
Add a simple cache-busting query string to online.db retrieval
...
As we are finally pushing updates for this database, this adds a minimum
level of guarantee that a client will request a new version (without
having to worry about multiple levels of server-side caching).
2020-12-11 17:56:02 +09:00
smoogipoo
2150cf1c52
Rename parameters
2020-12-02 10:55:48 +09:00
smoogipoo
5760e1c1fc
Make HitSampleInfo immutable
2020-12-01 15:37:51 +09:00
Dean Herbert
25af091409
Fix storyboard animations of very old beatmaps playing too slow
...
Closes https://github.com/ppy/osu/issues/10772 .
2020-11-12 17:03:43 +09:00
Dean Herbert
6cc0bf17a9
Add explicit lock object and some xmldoc for clarity
2020-11-10 14:31:52 +09:00
smoogipoo
66ea1572c7
Fix unsafe list manipulation in BeatmapDifficultyCache
2020-11-10 01:10:00 +09:00
Dan Balasescu
a2877fb00a
Merge pull request #10730 from peppy/fix-patcher-no-object-crash
...
Fix legacy patcher crash on no objects present
2020-11-09 18:51:00 +09:00
Bartłomiej Dach
6d4bb4316c
Fix difficulty retrieval for online-sourced beatmaps
2020-11-08 00:12:25 +01:00
Dean Herbert
c5b6908e71
Always write [HitObjects] to file
...
I think this is expected. If not, there's an alternative solution.
2020-11-08 00:18:27 +09:00
Dean Herbert
c1c3d37720
Remove non-null assert
2020-11-06 17:24:28 +09:00
Dean Herbert
f51cb0dd14
Add ruleset fallback logic into cache lookup class
2020-11-06 16:58:53 +09:00
Dean Herbert
c5b172d0dd
Remove synchronous lookup path from BeatmapDifficultyCache
2020-11-06 14:53:15 +09:00
Dean Herbert
b69ada64e8
Update BeatmapDifficultyCache to use base implementation logic
2020-11-06 14:31:21 +09:00
Dean Herbert
517a656899
Move StarDifficulty to own file
2020-11-06 13:51:25 +09:00
Dean Herbert
74ca2faa31
Remove unused using
2020-11-06 13:48:06 +09:00
Dean Herbert
0103b12575
Add basic base class to begin to standardise function across caching components
2020-11-06 13:26:39 +09:00
Dean Herbert
5113d4af8f
Rename BeatmapDifficultyManager to BeatmapDifficultyCache
2020-11-06 13:14:29 +09:00
Dean Herbert
ab9e0aac58
Merge pull request #10258 from Game4all/results-dynamic-pp-calc
2020-11-02 15:40:55 +09:00
Dean Herbert
73b290aca3
Merge branch 'master' into results-dynamic-pp-calc
2020-11-02 14:47:33 +09:00
Dean Herbert
3adf451e82
Handle changes via SamplePoints list for simplicity
2020-11-02 14:40:40 +09:00
Bartłomiej Dach
3090b6ccb5
Resolve CA2249 inspections
...
"Use `string.Contains` instead of `string.IndexOf` to improve
readability"
2020-11-01 18:54:44 +01:00
Bartłomiej Dach
ca5de22ca5
Resolve CA1834 inspection
...
"Use `StringBuilder.Append(char)` instead of
`StringBuilder.Append(string)` when the input is a constant unit string"
2020-11-01 18:50:13 +01:00
Dean Herbert
89797d7a57
Merge pull request #9786 from Wieku/storyboard-skin-sprites
...
Allow storyboard elements to load textures from skins
2020-10-23 17:16:55 +09:00
Dean Herbert
9753dab93b
Remove IOnlineComponent and change existing components to use bindable flow
2020-10-22 14:19:12 +09:00
Bartłomiej Dach
e2552d4c36
Merge branch 'master' into storyboard-skin-sprites
2020-10-20 23:01:54 +02:00
Bartłomiej Dach
cdd56ece87
Read UseSkinSprites when decoding storyboards
2020-10-20 22:49:56 +02:00
Dan Balasescu
bd4e0e1a60
Merge branch 'master' into epilepsy-warning
2020-10-20 17:43:37 +09:00
Dan Balasescu
13060b8575
Merge branch 'master' into beatmap-carousel-less-diffcalc-stutter
2020-10-20 14:26:16 +09:00
Bartłomiej Dach
fd4bab85cf
Merge branch 'master' into epilepsy-warning
2020-10-20 01:06:46 +02:00
Bartłomiej Dach
1238e6c30f
Add flag value to database
...
Unfortunately required, as loadBeatmaps() refreshes the decoded beatmap
with the database-stored values, which can end up overwriting the
decoded ones.
2020-10-20 00:46:08 +02:00
Bartłomiej Dach
a9f27a71a2
Fix code formatting issues
2020-10-19 23:53:41 +02:00
Bartłomiej Dach
ba818e3ae0
Merge branch 'master' into results-dynamic-pp-calc
2020-10-19 21:41:07 +02:00
smoogipoo
dfbc0965e4
Merge branch 'master' into peppy/skinnable-health-display
2020-10-16 23:17:17 +09:00
Berkan Diler
fe3a23750c
Use char overloads for string methods
2020-10-16 11:52:29 +02:00
Dean Herbert
e89c5c3b3c
Add dynamic compile exceptions to fix skin test scenes
2020-10-16 17:08:46 +09:00
Dean Herbert
88ffcb9234
Update EndsWith usages
2020-10-16 12:58:34 +09:00
Dean Herbert
cc41845f56
Add missing string function ordinal specifications
2020-10-16 12:49:31 +09:00
Dean Herbert
07e6609e6d
Disable difficulty calculation for set-level difficulty icons
2020-10-14 14:16:22 +09:00
Bartłomiej Dach
1af17fbd5e
Merge branch 'master' into fix-early-break-cull
2020-10-13 18:02:08 +02:00
Bartłomiej Dach
7117fd0fba
Add xmldoc and nullability annotations
2020-10-12 21:44:04 +02:00
Bartłomiej Dach
779e6e10a7
Split ctors to avoid passing fields one by one
2020-10-12 21:43:14 +02:00
smoogipoo
ccf7e2c49a
Fallback to default ruleset star rating if conversion fails
2020-10-12 16:31:42 +09:00
smoogipoo
379971578d
Remove culling notice from HasEffect
2020-10-12 15:28:16 +09:00
Bartłomiej Dach
8af78656e4
Add precision tolerance to difficulty rating range checks
2020-10-10 18:15:52 +02:00
smoogipoo
d536a1f75e
Fix breaks being culled too early
2020-10-09 21:04:56 +09:00
Lucas A
7f5cf04b2b
Fix merge conflicts.
2020-10-07 13:28:49 +02:00
Dean Herbert
afe3d3989a
Force first hitobject to be a NewCombo in BeatmapProcessor preprocessing step
2020-10-06 22:10:13 +09:00
Dan Balasescu
783a463772
Merge branch 'master' into colourise-control-point-table
2020-10-05 20:47:06 +09:00
Dan Balasescu
051ea7eda9
Merge pull request #10329 from peppy/editor-file-drop-support
...
Add drag-drop support in editor setup screen for audio and background images
2020-10-05 20:05:41 +09:00
Dean Herbert
2ed43c14f8
Merge branch 'master' into editor-file-drop-support
2020-10-05 17:48:06 +09:00
Dean Herbert
365a38e92f
Merge branch 'master' into dynamic-difficulty-icon
2020-10-05 17:37:01 +09:00
Dean Herbert
50eca202f4
User IEnumerable for HandledExtensions
2020-10-02 16:17:10 +09:00
Dean Herbert
f501c88b46
Fix individual control points not being removed from group when group is removed
2020-10-02 15:28:21 +09:00
smoogipoo
40c153e705
Use component instead of drawable
2020-10-01 21:39:40 +09:00
smoogipoo
62b55c4c9c
Use static method, add xmldoc + link to wiki
2020-10-01 20:50:47 +09:00
Dean Herbert
e96e30a19d
Move control point colour specifications to common location and use for formatting timing screen table
2020-10-01 19:29:34 +09:00
smoogipoo
2213db2088
Use the given ruleset by default
2020-10-01 00:59:41 +09:00
smoogipoo
fde00d3431
Make DifficultyIcon support dynamic star rating
2020-10-01 00:53:25 +09:00
smoogipoo
917e8fc3ba
Add difficulty rating to StarDifficulty
2020-10-01 00:53:01 +09:00
Lucas A
2766cf73b4
Reuse BeatmapDifficultyManager cache for beatmap difficulty attributes.
2020-09-29 18:32:02 +02:00
Lucas A
ddede85704
Split performance calculation to its own class.
2020-09-27 12:44:29 +02:00
Lucas A
84cc6068f5
Remove unnecessary XMLDoc comment and remove unecessary implicit null parm
2020-09-27 09:25:01 +02:00
Lucas A
4d94bf3163
Rename CalculateScorePerformance -> CalculatePerformance
2020-09-25 19:16:33 +02:00
Lucas A
77a9d92f42
Add dynamic pp calculation to score panels for local scores
2020-09-25 19:15:40 +02:00
Lucas A
4d743f64f5
Add a method to calculate asynchronously performance on a beatmap.
2020-09-25 18:17:01 +02:00
Dean Herbert
50ba320a51
Expand available file operations in ArchiveModelManager
2020-09-25 13:16:30 +09:00
smoogipoo
de5ef8a471
Rework to support obsoletion
2020-09-17 21:37:32 +09:00
smoogipoo
e71991a53c
Add default token
2020-09-17 18:37:48 +09:00
smoogipoo
c7d24203ce
Make beatmap conversion support cancellation tokens
2020-09-17 17:40:05 +09:00
smoogipoo
be2d34d5dc
Merge branch 'master' into score-recalc
2020-09-09 21:31:31 +09:00
Dean Herbert
5b93752065
Merge pull request #10103 from smoogipoo/disable-online-lookups-tests
...
Disable online beatmap lookups in tests
2020-09-09 21:21:04 +09:00
smoogipoo
aeae009512
Disable online beatmap lookups in tests
2020-09-09 20:12:40 +09:00
smoogipoo
117c7ec6b2
Merge branch 'master' into score-recalc
2020-09-09 14:38:36 +09:00
Dean Herbert
2cd07b2d3c
Fix editor crash on saving more than once
...
I'm fixing this in the simplest way possible as this kind of issue is
specific to EF core, which may cease to exist quite soon. Turns out the
re-retrieval of the beatmap set causes concurrency confusion and wasn't
actually needed in my final iteration of the new beatmap logic.
2020-09-09 12:48:12 +09:00
Dean Herbert
6b50d44dde
Merge branch 'master' into editor-new-beatmap
2020-09-07 18:43:16 +09:00
Dean Herbert
4680728b9c
Merge branch 'master' into update-dcc-exclusions
2020-09-07 18:01:44 +09:00
smoogipoo
9ab6d584d3
Merge branch 'master' into editor-new-beatmap
2020-09-07 14:30:41 +09:00
Dan Balasescu
e17ccdfe9f
Merge branch 'master' into combo-colors
2020-09-07 13:55:41 +09:00
Bartłomiej Dach
f138b92078
Merge branch 'master' into editor-new-beatmap
2020-09-06 18:24:02 +02:00
smoogipoo
1143d5d992
Update class exclusion for dynamic compilation
2020-09-04 20:41:08 +09:00
Dean Herbert
25e142965d
Strongly type and expose default beatmap information icon implementations for other rulesets
2020-09-04 15:01:32 +09:00
Dean Herbert
fba253f131
Take user argument in CreateNew method parameters
2020-09-04 13:17:43 +09:00
Dean Herbert
f14a82e3a9
Remove unnecessary conversion
2020-09-04 13:13:53 +09:00
Dean Herbert
cd253ab055
Further tweaks to get closer to design originals
2020-09-04 13:05:39 +09:00
Dean Herbert
9d2dff2cb8
Add scale to allow legacy icons to display correctly sized
2020-09-04 12:55:39 +09:00
Dean Herbert
d32b77f045
Add missing extension to filename
...
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2020-09-03 21:33:25 +09:00
Dean Herbert
1c1c583d3b
Fix regression in file update logic (filename set too early)
2020-09-03 19:31:40 +09:00
Dean Herbert
a555407f37
Fix various test failures due to missing beatmap info in empty beatmap
2020-09-03 19:25:18 +09:00
Dean Herbert
72cb65c22f
Update and add missing beatmap statistic icons to info wedge
2020-09-03 17:52:22 +09:00
Dean Herbert
d849f7f2b5
Use the local user's username when saving a new beatmap
2020-09-03 13:20:23 +09:00
Dean Herbert
e337e6b3b0
Use a more correct filename when saving
2020-09-03 13:20:23 +09:00
Dean Herbert
faf9b0a528
Fix hard crash when trying to retrieve a beatmap's track when no file is present
2020-09-03 13:20:23 +09:00
Dean Herbert
e032844570
Start with a fresh beatmap when entering editor from main menu
2020-09-03 13:20:23 +09:00
Craftplacer
c2ade44656
Change types back
2020-09-01 17:58:06 +02:00
Craftplacer
9835d98942
Merge remote-tracking branch 'upstream/master' into combo-colors
2020-09-01 17:39:35 +02:00
Dan Balasescu
f08e7828da
Merge branch 'master' into beatmap-track-rework
2020-09-01 16:06:38 +09:00
Craftplacer
9b3a48ee5e
Revert "Add marker interface for beatmap skins"
2020-08-31 18:29:46 +02:00
Craftplacer
fb37a14d57
Update LegacyBeatmapEncoder.cs
2020-08-31 17:24:03 +02:00
Craftplacer
1484e78654
Update xmldoc
2020-08-31 17:24:00 +02:00
Craftplacer
eafa97af17
Revert changes done to SkinConfiguration and IHasCustomColours
2020-08-31 17:23:42 +02:00
Dan Balasescu
bd2f863b56
Merge branch 'master' into legacy-mirror-mod-replays
2020-08-31 12:41:17 +09:00
Craftplacer
7e668fc31a
Update osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs
...
Co-authored-by: Salman Ahmed <email@iisalman.me>
2020-08-30 16:11:49 +02:00
Craftplacer
1fdf8e6200
Fix xmldoc in LegacyBeatmapEncoder
2020-08-30 16:07:58 +02:00
Craftplacer
e428144f73
Use IBeatmapSkin
2020-08-30 11:34:50 +02:00
Craftplacer
00b68b050c
Merge remote-tracking branch 'upstream/master' into combo-colors
2020-08-30 10:16:38 +02:00
Dean Herbert
814655770d
Merge branch 'master' into beatmapskin-interface
2020-08-30 12:22:55 +09:00
Dean Herbert
cd0a73883d
Merge pull request #9945 from smoogipoo/skin-colour-fix-2
...
Exactly reproduce osu!stable skin colour alphas
2020-08-29 20:06:26 +09:00
Bartłomiej Dach
658a1d159f
Add legacy flag value for mirror mod
2020-08-29 11:45:59 +02:00
Craftplacer
82acb3506c
Add and change xmldocs
2020-08-29 11:07:28 +02:00
Craftplacer
4cb9e1d443
Initial commit
2020-08-29 10:33:43 +02:00
smoogipoo
436dbafe57
Fix incorrect comparison for mods of different instances
2020-08-28 22:12:17 +09:00
smoogipoo
43c61e5830
Re-query beatmap difficulty before computing
2020-08-28 22:08:28 +09:00
smoogipoo
4d15f0fe52
Implement basic score recalculation
2020-08-28 19:16:46 +09:00
Craftplacer
e6646b9877
Resolve review comments
2020-08-23 15:08:02 +02:00
Dean Herbert
b72f06fef6
Centralise and clarify LoadTrack documentation
2020-08-22 19:42:34 +09:00
smoogipoo
88d50b6c47
Remove alpha mangling from LegacyDecoder
2020-08-22 00:15:37 +09:00
Dean Herbert
d2c2e8bbe8
Revert some more usage of MusicController back to WorkingBeatmap
2020-08-21 15:17:21 +09:00
Dean Herbert
526f06be4c
Add back track loaded bool in WorkingBeatmap
2020-08-21 13:53:37 +09:00
Dean Herbert
357fb3a10e
Merge branch 'master' into beatmap-track-rework
2020-08-21 12:53:09 +09:00
Dean Herbert
083bcde3cf
Fix beatmap transfer not working
2020-08-18 13:01:35 +09:00
smoogipoo
583760100a
Implement mania invert mod
2020-08-18 01:40:55 +09:00
Dean Herbert
d9debef156
Add explicit LoadTrack method
2020-08-17 15:38:16 +09:00
Dean Herbert
71f4e753f0
Merge branch 'master' into beatmap-track-rework
2020-08-16 22:35:32 +09:00
Craftplacer
1448c9e381
Merge remote-tracking branch 'upstream/master' into combo-colors
2020-08-15 23:01:38 +02:00
Craftplacer
c4a7fac760
Add required parameters and other various changes
2020-08-15 22:03:24 +02:00
Dean Herbert
c3757a4660
Fix beatmap covers not being unloaded in most overlays
...
Eventually we'll probably want something smarter than this, but for the
time being this helps stop runaway memory usage.
2020-08-14 19:22:26 +09:00
smoogipoo
91e28b849d
Fix incorrect BeatmapManager construction
2020-08-13 00:29:23 +09:00
Craftplacer
8ffaa49839
Handle additional null case
2020-08-12 06:40:21 +02:00
Craftplacer
139c0c75f8
Add documentation for constructor
2020-08-12 06:40:21 +02:00
smoogipoo
b66f303e71
Add annotation
2020-08-12 00:48:45 +09:00
smoogipoo
faff0a70c4
Privatise BMWB
2020-08-11 13:48:57 +09:00
smoogipoo
338c01fa43
Remove track store reference counting, use single instance stores
2020-08-11 13:16:06 +09:00
Craftplacer
78692dc684
Initial commit
2020-08-10 05:21:10 +02:00
smoogipoo
e87f50f74f
Rename method
2020-08-07 22:31:41 +09:00
smoogipoo
b6fb7a0d39
Fix possibly setting null track
2020-08-07 22:05:58 +09:00
smoogipoo
f53672193e
Fix track stores being kept alive
2020-08-06 17:48:07 +09:00
smoogipoo
86ae61c6b7
Re-implement store transferral in BeatmapManager
2020-08-06 16:24:14 +09:00
smoogipoo
6e42b8219c
Move track to MusicController, compiles
2020-08-06 16:24:14 +09:00
smoogipoo
4648362214
Safeguard against potential finalise-before-initialised
2020-07-29 11:30:25 +09:00
smoogipoo
a57b6bdc18
Remove cancellation of linked tokens
2020-07-29 11:29:38 +09:00
smoogipoo
fa25f8aef9
Dispose update scheduler
2020-07-28 17:23:35 +09:00
smoogipoo
96f68a3251
Reorder method
2020-07-28 16:53:07 +09:00
smoogipoo
ff3cb6487d
Store all linked cancellation tokens
2020-07-28 16:53:07 +09:00
smoogipoo
44b0aae20d
Allow nullable ruleset, reword xmldoc
2020-07-24 13:54:47 +09:00
smoogipoo
b10b99a670
Change method signatures to remove tracked/untracked
2020-07-24 13:52:43 +09:00
smoogipoo
de007cc1c6
Use IEnumerable mods instead of IReadOnlyList
2020-07-24 13:40:01 +09:00
smoogipoo
264bd7ced1
Apply general refactoring from review
2020-07-24 13:38:53 +09:00
smoogipoo
6b7f05740e
Fix potential missing ruleset
2020-07-22 12:48:12 +09:00
smoogipoo
aca4110e36
Use existing star difficulty if non-local beatmap/ruleset
2020-07-22 12:47:53 +09:00
smoogipoo
00e6217f60
Don't store BeatmapInfo/RulesetInfo references, remove TimedExpiryCache
2020-07-21 23:50:54 +09:00
smoogipoo
107b5ca4f2
Add support for bindable retrieval
2020-07-21 23:13:04 +09:00
smoogipoo
599a15edb8
Merge branch 'master' into beatmap-difficulty-manager
2020-07-21 20:09:53 +09:00
Gagah Pangeran
055e31ddd5
update minor
2020-07-20 18:37:02 +07:00
Gagah Pangeran
acbf13ddc4
add epilepsy warning field
2020-07-20 17:36:42 +07:00
Dean Herbert
3823bd8343
Add back missing default implementations for lookup functions
2020-07-19 14:11:21 +09:00
Dean Herbert
7250bc351d
Remove unnecessary new() specification
2020-07-18 12:06:41 +09:00
Dean Herbert
2f16b448ea
Set beatLength inline
2020-07-18 12:03:49 +09:00
Dean Herbert
8147e67f53
Use static instances in all fallback ControlPoint lookups to reduce allocations
2020-07-18 11:53:04 +09:00
smoogipoo
3191bb506f
Improve asynchronous process
2020-07-16 21:07:14 +09:00
smoogipoo
6df1b1d9ea
Add a background beatmap difficulty manager
2020-07-16 20:43:14 +09:00
Dean Herbert
cc62d8911a
Merge pull request #9573 from smoogipoo/taiko-diffcalc-fixes-2
2020-07-16 14:59:06 +09:00
Dean Herbert
8ace06fcc5
Fix continuations attaching to the BeatmapOnlineLookupQueue scheduler
2020-07-14 16:03:40 +09:00
Dean Herbert
e35e9df4e1
Fix local online cache database not being used when offline / logged out
2020-07-14 12:02:03 +09:00
smoogipoo
0ea13dea55
Introduce legacy timing point fp errors
2020-07-13 17:06:00 +09:00
smoogipoo
1116703e92
Fix potential out-of-order objects after conversion
2020-07-13 16:52:05 +09:00
Dean Herbert
632f333ce2
Add ability to return protected beatmaps in GetAllUsable call
2020-07-10 17:20:27 +09:00
smoogipoo
04ce436f6a
Dispose beatmap lookup task scheduler
2020-07-09 14:46:58 +09:00
ekrctb
3278a1d7d8
Standardize osu!catch coordinate system
...
There were two coordinate systems used:
- 0..512 (used in osu!stable)
- 0..1 (relative coordinate)
This commit replaces the usage of
the relative coordinate system to
the coordinate system of 0..512.
2020-07-02 00:21:45 +09:00
Dean Herbert
e5a901cec7
Merge branch 'master' into results-screen-statistics-overlapping-transition
2020-06-28 22:14:22 +09:00
Dean Herbert
d0787ddf99
Merge pull request #9369 from smoogipoo/fix-hyperdash-alpha
2020-06-26 14:46:46 +09:00
Dean Herbert
b077a2856d
Merge branch 'master' into results-screen-statistics-overlapping-transition
2020-06-25 18:44:08 +09:00
smoogipoo
4ff9a91012
Adjust at parse time instead
2020-06-25 14:15:26 +09:00
smoogipoo
6bc507d49e
Increase coordinate parsing limits
2020-06-24 18:53:52 +09:00
smoogipoo
6afd6efdeb
Return default beatmap if local beatmap can't be retrieved
2020-06-22 20:33:08 +09:00
smoogipoo
88aed1d504
Merge branch 'master' into update-inspectcode-version
2020-06-09 20:12:39 +09:00
Dan Balasescu
1476412eaa
Merge branch 'master' into startup-safety
2020-06-09 13:55:33 +09:00
Dean Herbert
63003757c4
Remove WorkingBeatmap cache when deleting or updating a beatmap
2020-06-08 14:48:26 +09:00
smoogipoo
443977aa8d
Remove PreUpdate, update hash in Save()
2020-06-08 14:40:17 +09:00
smoogipoo
dfed27bd46
Add back stream seeking for sanity
2020-06-08 14:24:21 +09:00
Dean Herbert
b41384dde8
Merge branch 'master' into multiplayer-beatmap-checksum
2020-06-07 18:05:33 +09:00
smoogipoo
0107e9ba16
Change lookups to use SingleOrDefault()
2020-06-05 19:18:00 +09:00
Dean Herbert
c155ab8339
Check filenames and timestamps before reusing an already imported model
2020-06-03 18:03:10 +09:00
smoogipoo
f3b5149648
Move some suggestions to warnings, resolve issues
2020-06-03 16:48:44 +09:00
smoogipoo
dfb9687fb5
Extract update into PreUpdate(), add test
2020-06-02 17:22:09 +09:00
smoogipoo
b41bb5a682
Update databased MD5 hash on save
2020-06-02 14:04:00 +09:00
Dan Balasescu
64d1b4b11b
Merge branch 'master' into move-setter-to-duration
2020-06-01 15:55:48 +09:00
Dean Herbert
81b8898272
Fix incorrect type cast in encoder
2020-05-31 22:30:55 +09:00
Dean Herbert
cbd563e80b
Rename to IHasDuration
2020-05-27 12:38:39 +09:00
Dean Herbert
6b5b215299
Split out IHasPath from IHasCurve to better define hitobjects
2020-05-26 17:44:47 +09:00
Dean Herbert
0cc6d6d97c
Merge pull request #9033 from smoogipoo/applydefaults-cancellation
...
Add cancellation token support to CreateNestedHitObjects()
2020-05-26 12:04:06 +09:00
smoogipoo
bc35bc5efb
Merge branch 'master' into applydefaults-cancellation
2020-05-25 16:45:30 +09:00
Dean Herbert
c071fe6140
Add the ability to export skins
2020-05-24 13:44:11 +09:00
Salman Ahmed
3d3cc2c15e
Dispose BeatmapOnlineLookupQueue cache download request
2020-05-22 17:26:37 +03:00
smoogipoo
e5de382760
Merge branch 'master' into storyboard-overlay-layer
2020-05-20 15:08:45 +09:00
Dean Herbert
052ad79fc6
Convert dangerous events to IBindables
2020-05-19 16:44:22 +09:00
Bartłomiej Dach
9415e45aea
Add overlay layer to enumeration type
2020-05-18 22:45:31 +02:00
smoogipoo
4719fcc291
Actually use the cancellation token
2020-05-15 18:17:39 +09:00
smoogipoo
4079642d58
Actually pass in the cancellation token
2020-05-15 18:13:47 +09:00
Dean Herbert
916d8245e6
Don't timeout on long beatmap load when debugging
2020-05-11 12:50:47 +09:00
smoogipoo
401c516503
Expose searchable terms from beatmap info instead
2020-05-07 13:04:08 +09:00
Dan Balasescu
0eae8d078b
Merge branch 'master' into master
2020-05-05 13:33:29 +09:00
alex
0e2ccac33b
Add spaces to comments
2020-05-04 18:36:24 -07:00
Dean Herbert
a1cd007cad
Fix song select tests potentially failing due to difficulty panels not yet displayed
2020-05-04 14:44:53 +09:00
Dean Herbert
68d40cf790
Fix test failures due to online cache download
2020-05-03 13:25:57 +09:00
Dean Herbert
6fef4eeb8f
Rename class and extract out lookup method
2020-05-03 09:35:48 +09:00
Dean Herbert
035b513b68
Use QuerySingle instead of QueryFirst
2020-05-03 09:32:33 +09:00
Dean Herbert
b9b5779251
Move deletion to catch instead of finally
2020-05-03 09:31:56 +09:00
Dean Herbert
deb87517d0
Add local beatmap lookup cache
2020-05-02 14:35:12 +09:00
Dean Herbert
d0a8c0fa71
Add kiai support to osu!taiko skinned playfields
2020-04-30 16:43:00 +09:00
Dean Herbert
d1ec99ffd9
Further improve beatmap carousel load performance by avoiding incorrect query construction
2020-04-29 16:51:22 +09:00
Dean Herbert
119000f1ab
Reduce database includes where possible
2020-04-28 21:43:35 +09:00
Tim Oliver
c1c930c472
Fixed linting warnings
2020-04-25 13:47:20 +08:00
smoogipoo
3b805daa0b
Fix hold note end time being written incorrectly
2020-04-22 16:40:07 +09:00
smoogipoo
7cdc9a599c
Fix mania holds written as spinners
2020-04-22 16:27:07 +09:00
Dean Herbert
223c822e57
Merge branch 'master' into all-ruleset-encoders
2020-04-22 13:04:16 +09:00
Dean Herbert
aaa0f908d5
Merge pull request #8818 from smoogipoo/fix-beatmap-encoder
...
Fix beatmap encoder by enabling untested test cases
2020-04-22 13:03:56 +09:00
Dean Herbert
360c9f8e38
Add test coverage and handle null creator
2020-04-22 09:19:34 +09:00
Dean Herbert
0c74f1aaa9
Fix now playing output showing empty brackets when no difficulty specified
2020-04-22 09:08:33 +09:00
smoogipoo
d8fdd73e17
Implement IHasCurve on DrumRoll
2020-04-22 09:06:04 +09:00
smoogipoo
ea0ebc8527
Implement beatmap encoding for all legacy rulesets
2020-04-22 09:06:04 +09:00
smoogipoo
516e6a4bb1
Fix overlapping control points not written correctly
2020-04-22 09:04:44 +09:00
smoogipoo
1421e876b1
Remove implicit new combo from spinners
2020-04-22 09:04:44 +09:00
smoogipoo
d8d85e5b08
Don't output certain properties if they don't exist
2020-04-22 09:04:44 +09:00
smoogipoo
3093c3e185
Fix custom sample set not being written correctly
2020-04-22 09:04:44 +09:00
Dean Herbert
aa153290a9
Merge pull request #8815 from smoogipoo/fix-controlpoint-decode
...
Fix control point overriding working incorrectly
2020-04-21 16:18:50 +09:00
smoogipoo
72fb34f82c
Fix overriding control points incorrectly
2020-04-21 14:19:05 +09:00
smoogipoo
9252b7876b
Don't serialise AllControlPoints
2020-04-21 13:58:23 +09:00
Dan Balasescu
367c3e69c4
Merge pull request #8788 from peppy/fix-editor-hard-crash
...
Fix hard crash in editor on legacy modes without encoder implementation
2020-04-20 15:25:48 +09:00
Dean Herbert
48cf7becd1
Merge branch 'master' into catch-hyperdash-fruit-colouring
2020-04-19 21:48:41 +09:00
Dean Herbert
6b16908c05
Move todo to appease dotnet-format
2020-04-18 21:51:37 +09:00
Dean Herbert
c00a386ff6
Remove exceptions instead
2020-04-18 21:46:04 +09:00
Dan Balasescu
4e22e569f5
Merge branch 'master' into timing-equivalence
2020-04-17 17:12:38 +09:00
smoogipoo
0fba93bf65
Add back null check
2020-04-17 17:10:13 +09:00
smoogipoo
9aac98664c
Remove unnecessary time property
2020-04-17 17:06:12 +09:00
smoogipoo
69fb984e71
Remove EquivalentTo() and Equals()
2020-04-17 17:04:09 +09:00
smoogipoo
6935221463
Improve logic for CSB transfer
2020-04-14 21:05:07 +09:00
Dan Balasescu
eb968d2bdb
Merge branch 'master' into timing-equivalence
2020-04-14 14:02:02 +09:00
Dean Herbert
081a02f748
Merge branch 'master' into catch-hyperdash-fruit-colouring
2020-04-14 10:01:15 +09:00
smoogipoo
cee4b005e6
Fix custom sample set 0 not falling back to default samples
2020-04-13 20:00:06 +09:00
Alchyr
f115fecb23
Fix formatting
2020-04-09 09:34:40 -07:00
smoogipoo
b900f229e7
Fix possible legacy beatmap encoder nullref
2020-04-09 20:21:42 +09:00
Alchyr
65823fb2e1
Use redundancy test
2020-04-08 01:42:35 -07:00
Alchyr
66a474619c
Adjust TimingControlPoint equivalency
2020-04-07 18:13:26 -07:00
Salman Ahmed
1b76a53d32
Move CatchTheBeat section handling to LegacySkinDecoder
...
Best place to reside at
2020-04-05 22:10:35 +03:00
Salman Ahmed
0eaea8ef9d
Create a constructor for break period
...
For simple construction of break periods (e.g. filling a method with an array of break periods inside a test case)
2020-04-05 21:29:03 +03:00
Salman Ahmed
10e65c4f53
Add handling for legacy CatchTheBeat section in LegacyDecoder
2020-04-05 00:10:12 +03:00
Will Kennedy
57944bd335
fix(?) InspectCode warnings
2020-04-02 21:36:31 -04:00
Will Kennedy
c042e709a5
Fix GetDecoder getting fallback decoder too often
2020-04-02 20:43:54 -04:00
smoogipoo
a77933f5e0
Add support for parsing mania skin colours
2020-04-02 17:56:12 +09:00
Dan Balasescu
8964001423
Merge branch 'master' into fix-invalid-set-ids-on-import
2020-03-30 22:24:12 +09:00
smoogipoo
4719aac235
Add basic mania skin parsing
2020-03-30 17:18:09 +09:00
Dean Herbert
f71c8cb30f
Only drop online set ID if beatmap IDs were stripped in online retrieval
2020-03-30 15:07:56 +09:00
Dean Herbert
7ecce713bb
Keep provided IDs where possible if not online
2020-03-30 15:07:39 +09:00
Dean Herbert
09d860d5f5
Fix imports with no matching beatmap IDs still retaining a potentially invalid set ID
2020-03-30 11:52:25 +09:00
voidedWarranties
b8f20831a1
Video no longer modifies storyboard resolution
2020-03-24 20:04:09 -07:00
Dean Herbert
f2e0fba164
Remove VideoFile from BeatmapMetadata
...
Leaving in database because it's a pain to drop columns.
2020-03-25 12:00:02 +09:00
Dean Herbert
729e006c3a
Merge branch 'master' into video-offset
2020-03-21 20:03:46 +09:00
smoogipoo
9c5423734a
Throw timeout exceptions instead
2020-03-16 11:33:26 +09:00
Dan Balasescu
f390c1995d
Apply comment suggestions
...
Co-Authored-By: Dean Herbert <pe@ppy.sh>
Co-Authored-By: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2020-03-16 11:29:28 +09:00
voidedWarranties
c27751050b
Switch back to strings and update setting labels
2020-03-12 23:29:11 -07:00
smoogipoo
f7c036726a
Add beatmap loading timeout
2020-03-13 13:52:40 +09:00
smoogipoo
40ab860ab5
Remove unused using
2020-03-11 18:23:30 +09:00
smoogipoo
9667934ed9
Remove unlimited timing points in difficulty calculation
2020-03-11 18:17:32 +09:00
Dan Balasescu
1d556bfc5f
Merge branch 'master' into video-offset
2020-03-11 15:13:18 +09:00
smoogipoo
e6858bf130
Fix crashes on some storyboards
2020-03-10 11:58:33 +09:00
voidedWarranties
4624582703
Revert position offset change for separate pull
2020-03-08 14:40:36 -07:00
voidedWarranties
22dd93a4f6
Code quality, read position offsets
2020-03-08 14:02:39 -07:00
voidedWarranties
76c832518f
Render video as a part of the storyboard
2020-03-07 21:32:03 -08:00
voidedWarranties
d68d7edea3
Start background video playback based on provided offset
2020-03-07 14:08:13 -08:00
smoogipoo
dd2bd5c19d
Add delay for loading multiplayer beatmap covers
2020-02-27 20:01:23 +09:00
Dean Herbert
db4fe4f728
Merge branch 'master' into adjust-beatmap-overlay
2020-02-21 09:52:44 +09:00
TheWildTree
62227ad856
Add MaxCombo to BeatmapInfo
2020-02-19 17:58:10 +01:00
TheWildTree
64a9b9c6fb
Remove redundant using directives
2020-02-16 21:52:08 +01:00
TheWildTree
dd5e713c0c
Adjust colours
2020-02-16 21:42:05 +01:00
Dean Herbert
006c52bbe5
Fix visible error being thrown when playing a no-video beatmap
2020-02-16 15:08:37 +09:00
recapitalverb
a7c2fd078f
Fix remaining cases
2020-02-14 20:27:21 +07:00
Dean Herbert
e022352812
Merge pull request #7784 from smoogipoo/fix-beatmap-disposal
...
Fix disposal-related errors by making WorkingBeatmap non-disposable
2020-02-13 18:52:47 +09:00
Tree
b694b0c90c
Merge branch 'master' into adjust-beatmap-overlay
2020-02-11 21:07:26 +01:00
smoogipoo
0ab3982494
Unify error handling
2020-02-10 17:25:11 +09:00
smoogipoo
668f36d7f3
Clean up logging
2020-02-10 17:04:31 +09:00
smoogipoo
cef682aa03
Make WorkingBeatmap non-disposable
2020-02-10 17:02:01 +09:00
smoogipoo
a988a53d69
Better handle beatmap task cancel exception
2020-02-10 17:02:00 +09:00
Dan Balasescu
1f3d4e1f72
Merge branch 'master' into string_cleanup
2020-02-10 13:37:17 +09:00
Dean Herbert
96574a98ad
Use non-zero length for fallback virtual track (allows tests to work as expected)
2020-02-09 21:34:56 +09:00
Dean Herbert
d73ef7c37e
Change DummyBeatmap's track to be 0 length
2020-02-09 21:25:11 +09:00
Berkan Diler
5b452293d6
Minor cleanups for legacy beatmap decoders
...
Replaces some string.StartsWith(string, StringComparison.Ordinal) calls with ring.StartsWith(char) , when only one char is compared. Possible since .NET-Standard 2.1
And another LegacyStoryboardDecoder.handleEvents() cleanup, saves some MB of allocations.
2020-02-08 18:05:27 +01:00
TheWildTree
76037e4ffd
Recolour ranked status pill
2020-02-05 16:31:14 +01:00
Dean Herbert
eabb5a8701
Use ToString instead of Substring
2020-01-26 17:40:38 +09:00
Dean Herbert
50ab5a7d07
Merge remote-tracking branch 'upstream/master' into LegacyDecoder_changes
2020-01-26 17:38:44 +09:00
Berkan Diler
219e14baa2
Address review and fix InspectCode
2020-01-24 17:05:27 +01:00
Berkan Diler
6658bdb223
Fix CodeFactor issues
2020-01-23 16:34:43 +01:00
Berkan Diler
316a764f6f
Minor cleanups for Legacy Storyboard/Beatmap decoder
2020-01-23 16:23:53 +01:00
smoogipoo
c25fefa3ca
Add beatmap package export
2020-01-15 13:44:46 +09:00
smoogipoo
4fe5ea8e92
Clear working beatmap cache on save
2020-01-14 19:24:53 +09:00
smoogipoo
a255832195
Add beatmapmanager method for saving
2020-01-14 19:24:53 +09:00
smoogipoo
681a43a318
Refactor to support beatmap updates
2020-01-14 19:24:53 +09:00
Berkan Diler
34d8740ec4
Remove remaining usage of osuTK.MathHelper
2020-01-08 20:21:13 +01:00
Ganendra Afrasya
e433e8b78f
Remove unused variable
2020-01-06 17:12:10 +07:00
Dan Balasescu
9702cc9809
Merge branch 'master' into remove-legacy-id
2019-12-25 21:01:12 +09:00
Dean Herbert
504a55e803
Merge branch 'master' into better-beatmap-conversion
2019-12-25 19:52:06 +09:00
Dean Herbert
145ac8e0b5
Remove redundant setter
2019-12-25 14:55:05 +09:00
Dean Herbert
0677f746aa
Provide the ruleset to converter classes
2019-12-24 16:02:16 +09:00
smoogipoo
3e03916c39
Add length check back to workingbeatmap
2019-12-23 17:45:59 +09:00
smoogipoo
6e7426a098
Simplify/improve beatmap conversion precheck
2019-12-23 17:44:18 +09:00
Salman Ahmed
55be4478aa
Merge remote-tracking branch 'upstream/master' into fallback-to-skin-combo-colours
2019-12-21 12:36:09 +03:00
smoogipoo
1802e0ff11
Fix storyboard incorrectly re-ordering elements
2019-12-20 16:04:05 +09:00
Dean Herbert
5cdc7d3b18
Merge pull request #7183 from smoogipoo/legacy-beatmap-saving
...
Add initial implementation of a legacy beatmap encoder
2019-12-18 18:43:14 +09:00
Dean Herbert
51a01c7006
Merge pull request #7256 from peppy/remove-ruleset-ctor-param
...
Remove RulesetInfo parameter from Ruleset constructor
2019-12-18 18:42:42 +09:00
Dean Herbert
1f3e1b3085
Remove unused using
2019-12-18 17:59:07 +09:00
Dean Herbert
4befabc257
Split out complex method
2019-12-18 17:35:51 +09:00
smoogipoo
602ce698d5
Fix storyboard vectorscale and scale cross-pollution
2019-12-18 17:21:38 +09:00
Dean Herbert
fa067b8799
Merge branch 'master' into legacy-beatmap-saving
2019-12-18 17:17:03 +09:00
Dean Herbert
6e0802e50c
Remove RulesetInfo parameter from Ruleset constructor
2019-12-18 14:49:09 +09:00
Dean Herbert
036efb9947
Merge branch 'master' into fix-effect-points
2019-12-18 01:43:15 +09:00
Dean Herbert
886db8eb22
Merge branch 'master' into fix-local-score-availability
2019-12-18 01:15:20 +09:00
smoogipoo
946a202ee5
Fix online replays not being available locally
2019-12-17 15:47:08 +09:00
Huo Yaoyuan
caf3f774ba
CA1309: compare strings correctly.
2019-12-17 13:00:15 +08:00
Huo Yaoyuan
ecfc6dfa3d
CA1825: use Array.Empty.
2019-12-17 12:59:48 +08:00
Dean Herbert
272d7d0ca9
Merge branch 'master' into fallback-to-skin-combo-colours
2019-12-17 12:36:20 +09:00
smoogipoo
be7b00cc34
Fix potentially incorrect custom sample bank
2019-12-16 17:12:31 +09:00
smoogipoo
3c9884456f
Use writeline
2019-12-16 17:08:46 +09:00
smoogipoo
5278236458
Use invariant ToLower()
2019-12-16 17:07:30 +09:00
smoogipoo
27150d6bbc
Use char concatenation for performance
2019-12-16 17:06:52 +09:00
smoogipoo
9fa6954ac2
Refactor getSampleBank a bit
2019-12-16 17:05:24 +09:00
smoogipoo
98dd1c2590
Use SingleOrDefault() where possible
2019-12-16 17:03:58 +09:00
smoogipoo
d56e99865c
Throw not implemented exceptions
2019-12-16 16:57:49 +09:00
smoogipoo
596fda3c1f
Refactor switch
2019-12-16 16:57:40 +09:00
smoogipoo
58e3fb0d0f
Coalesce to -1
2019-12-16 16:43:20 +09:00
Huo Yaoyuan
c457571da6
Use index and range expressions
2019-12-15 20:17:35 +08:00
smoogipoo
ea4eb6b204
CI cleanups
2019-12-13 21:29:10 +09:00
smoogipoo
9bc02f489e
Add missing headers
2019-12-13 19:14:49 +09:00
smoogipoo
0ad28a9400
Start at version 128
2019-12-13 19:11:45 +09:00
smoogipoo
abf3f341b7
Merge remote-tracking branch 'refs/remotes/origin/master' into legacy-beatmap-saving
2019-12-13 19:01:25 +09:00
smoogipoo
87a7f340e3
Fix first sample point being treated as redundant
2019-12-13 18:14:01 +09:00
smoogipoo
654499d8b0
Remove whitespace
2019-12-13 17:33:18 +09:00
smoogipoo
97158fce7d
Always attach a new combo to spinners
2019-12-13 17:02:10 +09:00
smoogipoo
0b7c4f252c
Fix artist being written in place of version
2019-12-13 17:01:59 +09:00
smoogipoo
53a665a034
Fix sound types and banks not being written correctly
2019-12-13 17:01:44 +09:00
smoogipoo
ac984423bb
Fix only single sound type being written
2019-12-12 19:53:30 +09:00
smoogipoo
dedae69db8
Prefer legacy curve format if possible
2019-12-12 19:52:15 +09:00
smoogipoo
d35d34c01b
Fix hanging semicolon for per-node bank output
2019-12-12 19:01:43 +09:00
smoogipoo
4760307bbb
Don't output the first slider control point
2019-12-12 19:01:15 +09:00
smoogipoo
60063eefd2
Fix up background/video events
2019-12-12 18:51:05 +09:00
smoogipoo
51bdb73b91
Don't write empty file names
2019-12-12 18:49:47 +09:00
smoogipoo
f89042cd0a
Add missing section header
2019-12-12 18:48:22 +09:00
smoogipoo
e09bbf0315
Implement background/video/break encoding
2019-12-12 18:47:28 +09:00
smoogipoo
d1dc3456d1
Fix incorrect repeat point count
2019-12-12 18:42:48 +09:00
smoogipoo
c3475a2dde
Write control points in absolute coordinates
2019-12-12 18:41:13 +09:00
smoogipoo
8f03599a62
Write default sampleset by name
2019-12-12 18:40:33 +09:00
Salman Ahmed
a9125f6544
Merge remote-tracking branch 'upstream/master' into fallback-to-skin-combo-colours
2019-12-12 12:37:51 +03:00
smoogipoo
be000e13e4
Implement initial legacy beatmap encoding support
2019-12-12 18:34:40 +09:00
smoogipoo
5861eca80d
Make DrawableRuleset take a converted beatmap
2019-12-12 15:58:11 +09:00
Huo Yaoyuan
cffeceb229
Remove unnecessary comment.
2019-12-11 16:24:22 +08:00
Huo Yaoyuan
b86a3dbfab
PathStandardise -> ToStandardisedPath
2019-12-11 16:06:56 +08:00
Huo Yaoyuan
6b3c7c8421
Remove usages of FileSafety class.
2019-12-11 16:05:35 +08:00
smoogipoo
c378e525da
Extract the rest of legacy enums
2019-12-10 20:23:15 +09:00
smoogipoo
3c18872a16
Extract legacy effect flags enum
2019-12-10 20:19:31 +09:00
smoogipoo
e3f925f69a
Extract legacy hitobject type enum
2019-12-10 20:19:16 +09:00
smoogipoo
8012b21ffa
Extract legacy sound type enum
2019-12-10 20:18:44 +09:00
Ganendra Afrasya
8be6abf607
Add param to let function return lighter colour for some diff
2019-12-06 10:07:16 +07:00
Ganendra Afrasya
0e97871461
Change colour if difficulty is ExpertPlus
2019-12-05 14:53:01 +07:00
Huo Yaoyuan
5375af7820
Remove other Equals(object) calls.
2019-12-03 20:23:27 +08:00
Dean Herbert
c49aeb08c4
Add API methods to perform requests out-of-queue
2019-11-29 20:03:14 +09:00
Huo Yaoyuan
c0fe91a84c
Merge branch 'master' into sharpen
2019-11-26 18:21:50 +08:00
Dean Herbert
709ec1404f
Centralise End/StartTime retrieval to extension method
2019-11-25 19:09:14 +09:00
iiSaLMaN
1e24ee7956
Remove ClearComboColours()
2019-11-24 02:07:56 +03:00
Dean Herbert
4e53bca8dd
Simplify tests
2019-11-21 18:50:38 +09:00
Huo Yaoyuan
374ef6ff83
Merge branch 'master' into sharpen
2019-11-20 17:30:58 +08:00
Huo Yaoyuan
4d1513cef6
Sadly, xmldoc doesn't support tuple elements.
2019-11-17 21:01:56 +08:00
Huo Yaoyuan
b1b234c6fb
Use paramref.
2019-11-17 20:49:36 +08:00
Huo Yaoyuan
f05b83d7d4
Use typeparamref.
2019-11-17 20:48:23 +08:00
Dean Herbert
0e587cb9f5
Merge branch 'master' into fix-duplicate-online-ids
2019-11-15 10:18:53 +09:00
Dean Herbert
6d54846462
Null online id on lookup failure
2019-11-15 10:18:47 +09:00
Dean Herbert
12243aaa9a
Dedupe .osu files with same hash in same set
2019-11-14 19:38:20 +09:00
Dean Herbert
fbf81207d4
Don't assign server-fetched online id if it was assigned elsewhere
2019-11-14 18:55:12 +09:00
Dean Herbert
1bc0eae2a6
Fix beatmap online retrieval response running incorrectly scheduled
2019-11-14 18:53:45 +09:00
Dean Herbert
81033e1fdf
Add extra logging
2019-11-14 18:52:07 +09:00
Huo Yaoyuan
dcfa98414f
Use ??=.
2019-11-12 19:56:51 +08:00
Huo Yaoyuan
8a1b70513c
No this. qualification.
2019-11-12 19:55:29 +08:00
Huo Yaoyuan
31cc0d13da
Use 'out var'.
2019-11-12 19:55:26 +08:00
Dean Herbert
758c304d92
Merge branch 'master' into fallback-to-skin-combo-colours
2019-11-12 19:00:05 +09:00
Huo Yaoyuan
e9b8cbb516
Apply other styles.
2019-11-11 20:27:04 +08:00
Huo Yaoyuan
ccc8aa6fa4
Apply brace style.
2019-11-11 20:13:13 +08:00
iiSaLMaN
cee16e9419
Merge remote-tracking branch 'refs/remotes/upstream/master' into fallback-to-skin-combo-colours
2019-11-07 19:11:29 +03:00
iiSaLMaN
808543885f
Change ComboColours type to IReadOnlyList<Color4>
...
Also exposes functions to modify the internal list (AddComboColours, ClearComboColours)
2019-11-07 15:54:30 +03:00
Dean Herbert
143f316cbe
Merge branch 'master' into fix-network-stalls
2019-11-06 17:54:08 +09:00
Dan Balasescu
b5a8bbaa60
Merge branch 'master' into editor-timing-screen
2019-11-06 12:02:00 +09:00
Dean Herbert
ddd58ea3da
Use LongRunningLoad on network load components
2019-11-01 19:40:45 +09:00
Dean Herbert
0cd912fcd3
Cover all non-APIAccess APIRequest calls with exception handling
2019-10-31 15:04:13 +09:00
Dean Herbert
5899bbd8a6
Fix merge regressions
2019-10-30 18:45:50 +09:00
Dean Herbert
93076ad6a1
Merge branch 'master' into editor-timing-screen
2019-10-30 18:42:20 +09:00
smoogipoo
cf2d885099
Fix control points being flushed too late
2019-10-30 18:02:18 +09:00
Dan Balasescu
514c9f1eef
Merge branch 'master' into bindable-control-points
2019-10-30 16:20:54 +09:00
Dan Balasescu
ced6042b3e
Use internal type name
2019-10-30 15:51:09 +09:00
Dean Herbert
1a4817879e
Fix precision changes in legacy control point types
2019-10-28 19:10:39 +09:00
Dean Herbert
090881cf6f
Add default bindable values
2019-10-28 16:23:43 +09:00
Dean Herbert
8f87957c70
Make all control point attributes bindable
...
Properties are left intact for compatibility reasons.
2019-10-28 16:23:43 +09:00
Dean Herbert
43ad4a3a3c
Tidy up string output
2019-10-28 12:31:38 +09:00
Dean Herbert
8069674824
Merge remote-tracking branch 'upstream/master' into bindable-control-points
2019-10-28 11:52:04 +09:00
Dean Herbert
45da22afe9
Add xmldoc and combine GroupAt / CreateGroup
2019-10-28 11:40:33 +09:00
Dean Herbert
2a6b3fd67c
Disallow inserting a group if one already exists with the current time value
2019-10-28 11:40:10 +09:00
Dean Herbert
59d983b66e
Allow binding to ControlPointInfo's Groups
2019-10-28 11:39:53 +09:00
Dean Herbert
10033239c7
Allow binding to ControlPointGroup's ControlPoints
2019-10-28 11:39:17 +09:00
Dean Herbert
814b520e5e
Avoid potential mis-cast in comparison
2019-10-27 11:35:45 +09:00
Dean Herbert
4290a71f44
Add special case for timing points
...
Timing points can't fallback to defaults and must be added at least once.
2019-10-26 11:38:05 +09:00
Dean Herbert
7502b64541
Merge branch 'control-point-grouping' into no-auto-gen
2019-10-26 10:35:34 +09:00
Dean Herbert
d6a49b9e93
Add back autogeneration rules
...
Will be removed in https://github.com/ppy/osu/pull/6604
2019-10-26 10:25:37 +09:00
Dean Herbert
7100319858
Fix incorrect control point retrieval in non-lookup cases
2019-10-26 08:31:41 +09:00
Dean Herbert
b52be3d639
Merge branch 'control-point-grouping' into no-auto-gen
2019-10-26 01:20:08 +09:00
Dean Herbert
d25f7f4c27
Correctly clear other lists
2019-10-26 01:19:23 +09:00
Dean Herbert
c031aeb14c
Fix inspection
2019-10-26 00:06:05 +09:00
Dean Herbert
eefa411182
Merge branch 'control-point-grouping' into no-auto-gen
2019-10-25 23:15:25 +09:00
Dean Herbert
d4fed43be7
Merge branch 'equivalent-to' into control-point-grouping
2019-10-25 23:15:15 +09:00
Dean Herbert
e39016bf01
Fix known non-nulls
2019-10-25 20:04:27 +09:00
Dean Herbert
8baf569f59
Remove necessity of AutoGenerated flag
2019-10-25 19:58:42 +09:00
Dean Herbert
e987db37ec
Add grouping of ControlPoints
2019-10-25 19:52:02 +09:00
Dean Herbert
e2f2638212
Replace local Equatable implementations with abstract EquivalentTo
2019-10-25 19:44:28 +09:00
iiSaLMaN
405ab07800
Check equality by ID -> OnlineBeatmapSetID -> Hash -> ReferenceEquals
2019-10-17 01:18:29 +03:00
iiSaLMaN
14c72f85fa
Fix incorrect beatmap set info equality check on non-online set info
2019-10-15 23:40:48 +03:00
iiSaLMaN
5e3f0f6c95
Return default combo colours if none provided
2019-10-09 21:08:07 +03:00
Bartłomiej Dach
7c2c537bc9
Allow fallback decoder overwrite
...
To fix the runtime crashes in difficulty calculation components, remove
the check for pre-existing fallback registration along with
the exception. The xmldoc for the registration function has been
extended to make users aware of possible consequences of calling it.
2019-10-04 18:20:20 +02:00
smoogipoo
ffde389641
Add difficulty calculator beatmap decoder fallback
2019-10-04 13:28:32 +09:00
Dean Herbert
6268bbcfc8
Merge branch 'master' into beatmap-parsing-fallback-v2
2019-10-03 15:12:21 +08:00
smoogipoo
cc533e8fe4
Remove BindableBeatmap
2019-10-01 17:24:47 +09:00
smoogipoo
04ac414249
Fix memory leaks due to audio track recycle order
2019-10-01 13:49:09 +09:00
smoogipoo
45f2bcc440
Fix combo bindings not being bound to nested hitobjects
2019-09-26 17:39:19 +09:00
Dean Herbert
a06cb54732
Merge branch 'master' into beatmap-parsing-fallback-v2
2019-09-20 15:28:08 +09:00
Dean Herbert
cffee1fd5e
Fix imported beatmap paths not correctly matching files
2019-09-19 20:02:45 +09:00
Dean Herbert
92556db9cd
Add query-based filter modes to song select search field
2019-09-19 02:48:28 +09:00
Bartłomiej Dach
dd9f620c23
Fix misleading xmldoc
2019-09-15 01:28:07 +02: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
Dean Herbert
65aa7b2016
Recreate beatmap video on each consumption
...
Should not be shared over multiple usages
2019-09-14 00:07:06 +09:00
Andrei Zavatski
437e121056
Merge remote-tracking branch 'refs/remotes/ppy/master' into beatmap-video
2019-09-13 13:39:58 +03:00
Dean Herbert
b80a8296cd
Fix unavailable rulesets crashing at song select
2019-09-04 20:28:52 +09:00
Dean Herbert
043034a6ce
Merge remote-tracking branch 'upstream/master' into beatmapset-genre-language
2019-09-02 13:45:25 +09:00
Andrei Zavatski
94512fea8e
Apply naming suggestions
2019-08-31 16:20:33 +03:00
Andrei Zavatski
6e5cb8a318
implement video parsing
2019-08-30 23:19:34 +03:00
Dean Herbert
84e4748268
Remove duplicate getAnimation function and improve namespacing
2019-08-30 12:59:58 +09:00
Dean Herbert
dc1046bf0c
Merge remote-tracking branch 'upstream/master' into add-ruleset-legacy-skin
2019-08-30 12:53:05 +09:00
smoogipoo
ae0a5504d7
Revert unnecessary change
2019-08-29 19:43:33 +09:00
smoogipoo
6ab2b20c70
Add an interface for working beatmaps
2019-08-29 19:38:44 +09:00
StanR
68ee7346b2
Remove usings
2019-08-29 12:49:44 +03:00
StanR
d303083179
Update to match api
2019-08-29 12:29:31 +03:00
Dean Herbert
98626018fd
Encapsulate editor hitobject additions/removals ( #5878 )
...
Encapsulate editor hitobject additions/removals
2019-08-29 18:20:24 +09:00
StanR
3347ee8170
Merge branch 'master' into beatmapset-genre-language
2019-08-29 09:57:53 +03:00
Dean Herbert
c6e757fdae
Remove redundant qualifier
2019-08-28 22:11:23 +09:00
Dean Herbert
f6ad95018a
Centralise default beat length specification
2019-08-28 20:22:16 +09:00
smoogipoo
348d88846d
Add IBeatmap<T> interface for typed hitobject retrieval
2019-08-28 20:19:22 +09:00
Dean Herbert
01aede3e29
Add comprehensive skin fallback integration testing
2019-08-28 19:57:17 +09:00
Dean Herbert
66223b9954
Merge branch 'master' into allow-fallback-to-samples-without-bank
2019-08-27 14:44:16 +09:00
Dean Herbert
289bd8e6b0
Don't return DefaultSkin on beatmap skin parsing failure
2019-08-26 14:25:35 +09:00
Dean Herbert
1d34124667
Revert all DifficultyIcon changes
2019-08-25 11:56:07 +09:00
Dean Herbert
a19a9b90ed
Simplify group filter display
2019-08-25 11:39:26 +09:00
iiSaLMaN
af4adb6339
Add xmldoc
2019-08-24 09:43:55 +03:00
iiSaLMaN
f6feef6b56
Remove redundant using directive
2019-08-24 00:33:14 +03:00
iiSaLMaN
83b6e0f30c
Implement grouped difficulty icon
2019-08-23 23:36:23 +03:00
iiSaLMaN
d4236c574f
Allow difficulty icon to be updateable
2019-08-23 23:30:54 +03:00
iiSaLMaN
f639df849f
Allow for difficulty icon to contain content
2019-08-23 23:11:36 +03:00
iiSaLMaN
7b04fb1690
StoryboardSample -> StoryboardSampleInfo
2019-08-23 14:54:39 +03:00
Dean Herbert
48716f8f2b
Update framework
2019-08-21 13:29:50 +09:00
Ganendra Afrasya
7143497441
Match up tooltip background color with OsuTooltipContainer
2019-08-19 10:32:01 +07:00
Dean Herbert
ecc04baf14
Merge branch 'refactor-difficulty-colours' into difficulty-icon-tooltip
2019-08-17 15:35:28 +09:00
Dean Herbert
87dc6499fa
Fix json decoding being a bit too eager to consume
2019-08-17 15:34:02 +09:00
Dean Herbert
097763bb1c
Add auto size duration
2019-08-17 15:29:39 +09:00
Dean Herbert
50046d5f69
Use new tooltip style
2019-08-17 15:20:27 +09:00
Dean Herbert
3dc81bdad5
Merge branch 'refactor-difficulty-colours' into difficulty-icon-tooltip
2019-08-17 15:19:46 +09:00
Dean Herbert
4fa9abeece
Replace DifficultyColouredContainer with a more scalable solution
2019-08-17 15:16:24 +09:00
Dean Herbert
f355cff8bc
Apply reviews
2019-08-15 12:11:54 +09:00
Dean Herbert
7e74953784
Merge remote-tracking branch 'upstream/master' into difficulty-icon-tooltip
2019-08-15 11:54:59 +09:00
Dean Herbert
ff4b271f64
Add extra quotations around output
2019-08-12 01:42:05 +09:00
Dean Herbert
ce62f6b56e
ToString should never return null
2019-08-12 01:40:11 +09:00