1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-26 05:12:57 +08:00
Commit Graph

2094 Commits

Author SHA1 Message Date
Dean Herbert
6297606baa Make sMake spinner's EndTime correct on construction 2020-02-07 19:08:37 +09:00
Dean Herbert
e31d69c749 Add commit status to EndPlacement; call BeginPlacement on initial movement 2020-02-07 18:02:48 +09:00
Dean Herbert
544685be48 Add support for reading skin frame rate from configuration file 2020-02-07 14:58:29 +09:00
Dean Herbert
daf5fa9da4 Throw NotSupportedException instead 2020-02-06 13:16:32 +09:00
Dean Herbert
cd6902a312 Make EndTime and RepeatCount settable 2020-02-05 17:52:51 +09:00
mcendu
9f79713fb3 move rotation logic to its own method 2020-02-05 14:23:59 +08:00
mcendu
d773eb2c22 refactor rotation logic to use explicit delta value 2020-02-05 14:05:12 +08:00
Dean Herbert
84fcf45aae Make slider tracking match what is on screen 2020-02-03 11:55:14 +09:00
Dean Herbert
cf4788d7ef
Merge branch 'master' into fix-follow-circle 2020-02-03 09:58:12 +09:00
TheWildTree
35032e2ddd Make variables private 2020-02-02 14:34:06 +01:00
TheWildTree
f7abfdb40e Remove unnecessary parameter 2020-02-02 14:33:48 +01:00
TheWildTree
e2589b2dcb Rename drawable 2020-02-02 11:24:28 +01:00
Bartłomiej Dach
434c0d92e4 Use Bindable{Float,Double}s everywhere
To avoid further floating-point comparison bugs, remove all usages of
Bindable<{float,double}>, replacing them with their
Bindable<Float,Double> counterparts.
2020-02-01 22:50:29 +01:00
TheWildTree
9f4261111b Match osu-stable behaviour and size 2020-02-01 16:55:30 +01:00
smoogipoo
811ddb02a4 General refactoring 2020-01-24 17:50:36 +09:00
smoogipoo
6fc6a376ee Fix incorrect slider selection point 2020-01-24 17:50:09 +09:00
Dean Herbert
289be7a17b Merge branch 'i-beat-snapping' into timeline-maybe 2020-01-23 15:45:33 +09:00
Dean Herbert
7c62cc3ac3 Merge remote-tracking branch 'smoogipoo/void-mouse-up-returns' into update-framework 2020-01-22 22:57:52 +09:00
smoogipoo
7b2f58eb30 Apply OnRelease method signature refactorings 2020-01-22 13:22:34 +09:00
Dean Herbert
bd96cf94a6 Begin refactoring SelectionBlueprint to handle non-drawable HitObjects 2020-01-21 12:47:14 +09:00
smoogipoo
bfb056c612 Apply input method signature refactorings 2020-01-20 18:17:21 +09:00
Dean Herbert
25aff5d96e Merge remote-tracking branch 'upstream/master' into decouple-blueprint-container 2020-01-20 17:08:59 +09:00
Dean Herbert
9a2d85e7d9 Remove usage of snapchat icon 2020-01-18 15:12:31 +09:00
McEndu
6579aa144d
Merge branch 'master' into mod-text 2020-01-16 20:11:51 +08:00
smoogipoo
5f178b7755 General refactorings 2020-01-16 11:54:03 +09:00
Dean Herbert
d57f55f053 Apply remaining changes required to restore previous functionality 2020-01-15 19:09:49 +09:00
mcendu
5d160376c0
nullable-ize Mod.Icon 2020-01-14 21:22:00 +08:00
smoogipoo
92daf9b8f1 Cleanup 2020-01-14 18:14:31 +09:00
Dean Herbert
fe09e34f1b Remove limiting clause 2020-01-14 01:48:20 +09:00
Dean Herbert
ab4f31639d Remove weird time clause 2020-01-14 01:47:44 +09:00
Dean Herbert
210d06b75e Remove default value 2020-01-14 01:45:32 +09:00
Dean Herbert
c5085aea24 Use Child, not InternalChild 2020-01-14 01:45:10 +09:00
Dean Herbert
619fe29871 Make reverse arrow animate faster via divisor specification
Adds MinimumBeatLength to BeatSyncedContainer to make sure things don't get out of hand.
2020-01-14 01:39:45 +09:00
Sebastian Krajewski
45cf65a28a Merge remote-tracking branch 'upstream/master' into reverse-arrows 2020-01-13 14:15:37 +01:00
Dean Herbert
87645f6a41 Remove excess namespace specification 2020-01-10 01:13:42 +08:00
Dean Herbert
3be2fc27f3
Merge branch 'master' into Remove_osuTK.MathHelper 2020-01-10 00:28:46 +08:00
smoogipoo
91735ff367 Update MathUtils namespace usages 2020-01-09 13:43:44 +09:00
Berkan Diler
ed2bf5154d Use tuple deconstruction to swap values 2020-01-08 20:46:17 +01:00
Berkan Diler
34d8740ec4 Remove remaining usage of osuTK.MathHelper 2020-01-08 20:21:13 +01:00
Sebastian Krajewski
21468eb070 Remove settings related to reverse arrow 2020-01-07 04:55:05 +01:00
Sebastian Krajewski
3194658998 Fix repeat point pulsing when it is in fade out state 2020-01-04 13:12:37 +01:00
Sebastian Krajewski
46271ccbc8 Add slider reverse arrow pulse settings 2020-01-04 13:01:42 +01:00
Sebastian Krajewski
fc0b622a69 Change reverse arrow pulse easing to OutQuad 2020-01-04 10:35:10 +01:00
Sebastian Krajewski
9da7eec0d9 Add pulse to slider reverse arrows 2020-01-04 08:21:48 +01:00
Albie Spriddell
3a903339d6 add playingverb and database migrations 2020-01-03 11:39:15 +00:00
Dean Herbert
ee332e0d42 Split out BlueprintContainer functionality further 2020-01-02 18:21:16 +09:00
Dean Herbert
ca90f708f1 Merge remote-tracking branch 'upstream/master' into remove-editor-beatmap-generics 2020-01-01 21:03:31 +09:00
smoogipoo
6069d98ced Remove generic editor beatmap 2019-12-27 19:39:30 +09:00
Dean Herbert
2c8879f0fb Lock user adjusted difficulty settings when changing beatmap 2019-12-27 19:05:17 +09:00
smoogipoo
35cdd67c4a Remove instantiation of non-existing processor 2019-12-27 12:47:23 +09:00
Dean Herbert
cac011edc1
Merge branch 'master' into hp-drain 2019-12-26 23:51:12 +09:00
Dean Herbert
3d5561b02e
Separate health and score processing components (#7358)
Separate health and score processing components
2019-12-26 23:48:55 +09:00
smoogipoo
00a36c388c Fix tests 2019-12-26 19:18:39 +09:00
Huo Yaoyuan
9a013acb26 Fix name typo of OsuModObjectScaleTween 2019-12-26 14:25:41 +08:00
smoogipoo
3b07c3913d Add perfect and ok values, move to base Judgement 2019-12-26 15:00:59 +09:00
smoogipoo
90a0569660 Tweak drain values 2019-12-26 15:00:58 +09:00
smoogipoo
522847987b Implement break/gameplay start times 2019-12-26 15:00:58 +09:00
smoogipoo
90cb9d9162 Simplify scoreprocesor/healthprocessor implementations 2019-12-26 14:59:49 +09:00
smoogipoo
7414a6aadd Merge remote-tracking branch 'huoyaoyuan/master' into health-processor
# Conflicts:
#	osu.Game.Rulesets.Catch/CatchRuleset.cs
#	osu.Game.Rulesets.Mania/ManiaRuleset.cs
#	osu.Game.Rulesets.Taiko/TaikoRuleset.cs
2019-12-26 14:56:54 +09: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
911dc2d98d Fix code inspections 2019-12-25 15:20:10 +09:00
Dean Herbert
52ba0cd816 Rename method to be more appropriate
Also adds xmldoc.
2019-12-25 15:20:04 +09:00
Dean Herbert
0677f746aa Provide the ruleset to converter classes 2019-12-24 16:02:16 +09:00
Dean Herbert
a324bfbc2c Remove LegacyID from Ruleset 2019-12-24 13:48:27 +09:00
smoogipoo
6e7426a098 Simplify/improve beatmap conversion precheck 2019-12-23 17:44:18 +09:00
unknown
fe73b9f8d3 make HP and OD generic and instantiate CS and AR to modes that need it 2019-12-22 16:45:32 +08:00
unknown
0eef218945 add missing new line 2019-12-20 18:42:29 +08:00
unknown
08b477ed52 make ModDifficultyAdjust abstract 2019-12-20 18:30:23 +08:00
smoogipoo
76f2fb378f Separate score and health parts of ScoreProcessor 2019-12-19 20:03:14 +09:00
Dean Herbert
ea661fce21
Merge branch 'master' into adjustable-map-settings 2019-12-18 18:44:11 +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
smoogipoo
2a128340d0 Merge remote-tracking branch 'refs/remotes/origin/master' into nightcore-beats 2019-12-18 17:58:37 +09:00
Dean Herbert
f150d22eaf
Fix SPM calculation logic not handling paused clocks (#7253)
Fix SPM calculation logic not handling paused clocks

Co-authored-by: Dean Herbert <pe@ppy.sh>
2019-12-18 16:30:18 +09:00
Dean Herbert
826b271371 Use exact ratio of legacy to default object size 2019-12-18 15:39:36 +09:00
Dean Herbert
6e0802e50c Remove RulesetInfo parameter from Ruleset constructor 2019-12-18 14:49:09 +09:00
smoogipoo
1fe0e45a9c Implement legacy slider border shadow 2019-12-18 13:37:37 +09:00
Salman Ahmed
cbfbbf9999 Make SpmCounter public 2019-12-18 03:04:37 +03:00
Salman Ahmed
7e58b4a948 Early-return on potential division by zero in SPM calculation 2019-12-18 03:03:12 +03:00
Dean Herbert
4443d2196b
Merge branch 'master' into legacy-slider-body 2019-12-17 23:42:31 +09:00
Dean Herbert
d219de7e27
Snap based on the end position/time of the previous object (#7240)
Snap based on the end position/time of the previous object
2019-12-17 23:41:20 +09:00
Dean Herbert
e0ce87adca
Move CreateScoreProcessor() to Ruleset (#7244)
Move CreateScoreProcessor() to Ruleset
2019-12-17 22:15:42 +09:00
smoogipoo
35276c3739 Prevent test scene failures through casting softly 2019-12-17 21:26:23 +09:00
Dan Balasescu
fd2785bab3
Merge branch 'master' into fxcop 2019-12-17 20:14:45 +09:00
smoogipoo
49bf8d27d1 Move CreateScoreProcessor() to Ruleset 2019-12-17 20:08:13 +09:00
smoogipoo
2d85145eec Make legacy accent colour multiplicative 2019-12-17 19:52:33 +09:00
smoogipoo
527ab1a72f Fix traceable mod not working on skin change 2019-12-17 19:49:13 +09:00
smoogipoo
7c2884700e Fix various display issues by abstracting further 2019-12-17 19:29:27 +09:00
smoogipoo
9caed9e98a Add legacy slider body support 2019-12-17 18:16:25 +09:00
smoogipoo
1e798a8dbe Add abstract implementation of slider path 2019-12-17 17:54:05 +09:00
smoogipoo
6da581f3fe Snap based on end position/time of the previous object 2019-12-17 16:35:40 +09:00
Huo Yaoyuan
ecfc6dfa3d CA1825: use Array.Empty. 2019-12-17 12:59:48 +08:00
Dean Herbert
b5db927d93 Merge branch 'master' into cinema-mod 2019-12-17 12:56:06 +09:00
Dean Herbert
a82b2a6c34
Merge pull request #7233 from smoogipoo/fix-cursortrail-texture
Fix cursortrail texture not being bound
2019-12-16 19:46:24 +09:00
Dean Herbert
eed2984bef
Update sdk and InspectCode version (#7208)
Update sdk and InspectCode version
2019-12-16 19:46:12 +09:00
smoogipoo
add04e98e1 Fix cursortrail texture not being bound 2019-12-16 18:10:44 +09:00
Dean Herbert
3f3ba603c1 Merge remote-tracking branch 'upstream/master' into nightcore-beats 2019-12-16 18:03:32 +09:00
Dean Herbert
520924a5ef
Don't reuse the same control point references for sliders (#7230)
Don't reuse the same control point references for sliders
2019-12-16 16:03:37 +09:00
smoogipoo
a554ca728b Don't reuse the same control point references 2019-12-16 15:27:54 +09:00
smoogipoo
db3dc4f375 Optimise cursortrail with custom vertex logic 2019-12-16 15:15:26 +09:00
Dean Herbert
5e98f65b52
Merge branch 'master' into separate-path-connection 2019-12-16 11:16:00 +09:00
Huo Yaoyuan
c457571da6 Use index and range expressions 2019-12-15 20:17:35 +08:00
unknown
01c036b0b0 implement backing beats for nightcore mods 2019-12-15 16:56:02 +08:00
mcendu
489d9dc7b5 Switch Expandtarget and "cursormiddle" 2019-12-14 18:33:56 +08:00
unknown
7f659cd057 Merge branch 'update-beatmap-settings' into adjustable-map-settings 2019-12-13 09:45:10 +08:00
unknown
002a125b4a make ModDifficultyAdjust generic 2019-12-12 21:14:26 +08:00
Dean Herbert
37a94988a3 Merge branch 'improve-hud-hiding' into cinema-mod 2019-12-12 16:12:19 +09:00
smoogipoo
5861eca80d Make DrawableRuleset take a converted beatmap 2019-12-12 15:58:11 +09:00
Dean Herbert
d2ada90434
Merge branch 'master' into single-scoreprocessor 2019-12-12 11:36:45 +09:00
Albie
4a1c6db3ed
Merge branch 'master' into cinema-mod 2019-12-11 18:00:17 +00:00
unknown
b0cf44c3be fix appveyor issues 2019-12-11 20:12:29 +08:00
unknown
b795532aa5 add difficulty adjustment mods 2019-12-11 19:43:16 +08:00
Dean Herbert
42a01a10dd Merge remote-tracking branch 'upstream/master' into separate-path-connection 2019-12-11 20:14:29 +09:00
Dean Herbert
50377e7286 Add summary xmldoc 2019-12-11 20:14:16 +09:00
Dean Herbert
47b6b01739 Rename class to signify it is a drawable 2019-12-11 20:11:48 +09:00
Dean Herbert
697e200856
Move control point removal to SliderSelectionBlueprint (#7154)
Move control point removal to SliderSelectionBlueprint
2019-12-11 19:27:53 +09:00
Dean Herbert
d027c982e4
Merge branch 'master' into separate-path-connection 2019-12-11 19:03:14 +09:00
Dean Herbert
a106e2a53f
Refactor distance snap grid to not require hitobjects (#7138)
Refactor distance snap grid to not require hitobjects
2019-12-11 19:02:29 +09:00
Dean Herbert
23959f3a3c Move control point removal to SliderSelectionBlueprint 2019-12-11 18:58:35 +09:00
Dean Herbert
d82ba3e7f7 Curve -> Curve type 2019-12-11 18:20:28 +09:00
Dean Herbert
03040d1750 Don't show inherit menu item when first control point is selected 2019-12-11 18:18:16 +09:00
Dean Herbert
97ca2e2753 Add missing bezier option to menu 2019-12-11 17:58:59 +09:00
smoogipoo
48f1dad4aa Remove abstract ScoreProcessor class 2019-12-11 17:25:06 +09:00
Dean Herbert
cda6757f52
Merge branch 'master' into path-type-menuitem 2019-12-11 16:43:55 +09:00
Dean Herbert
f515bdc599
Merge branch 'master' into separate-path-connection 2019-12-11 16:43:04 +09:00
Dean Herbert
632b1b9ee9
Merge branch 'master' into path-visualiser-refactor 2019-12-11 16:24:45 +09:00
Dean Herbert
d8cebd20ed Add xmldoc 2019-12-11 16:06:20 +09:00
Dean Herbert
86dac28dcb Merge remote-tracking branch 'upstream/master' into cursor-expand 2019-12-11 16:06:13 +09:00
Albie
a61f8cc2c3
Merge branch 'master' into cinema-mod 2019-12-10 17:06:53 +00:00
mcendu
dbe46c6cf7
conform to coding styles 2019-12-10 20:40:10 +08:00
mcendu
1afeaf31bc
make OsuCursorSprite abstract 2019-12-10 19:58:56 +08:00
mcendu
e37369304b property-ize expand target 2019-12-10 19:45:06 +08:00
mcendu
06cde2b0c2
remove unused using directive 2019-12-10 19:30:46 +08:00
Dean Herbert
f593caf0ea Remove unused class 2019-12-10 18:08:51 +09:00
Dan Balasescu
42a979b495
Merge branch 'master' into path-visualiser-refactor 2019-12-10 16:33:45 +09:00
smoogipoo
94a298a82d Refactor distance snap grid to not require hitobjects 2019-12-10 16:00:09 +09:00
Dean Herbert
5f3d163772
Merge branch 'master' into segmented-slider-paths-3 2019-12-10 14:28:20 +09:00
smoogipoo
e9ec6591a9 Separate path connections from control points 2019-12-10 11:20:08 +09:00
Dean Herbert
1db218f908 Don't show count when deleting only one control point
Reads better.
2019-12-10 03:29:25 +09:00
smoogipoo
1b14b0e5b6 Fix pieces blocking context menu 2019-12-10 00:08:38 +09:00
smoogipoo
9b318d2869 Add right-click menu item to change path type 2019-12-10 00:07:07 +09:00
smoogipoo
0ee303f7d6 Remove unused using 2019-12-09 22:45:44 +09:00
smoogipoo
2c4c190f15 Fix control points not adding to last segment 2019-12-09 22:44:47 +09:00
smoogipoo
bd2b0af269 Consider having only 1 control point as being deleted 2019-12-09 22:36:19 +09:00
smoogipoo
af90b45c40 Refactor path visualisers to use bindables 2019-12-09 20:49:59 +09:00
mcendu
22f2a4bed2
Fix LegacyCursor's cursormiddle expanding 2019-12-09 17:53:16 +08:00
mcendu
1e49078c52
Add OsuCursorSprite 2019-12-09 17:51:44 +08:00
smoogipoo
2dbf94f3ab Make placement blueprint add an initial segment 2019-12-09 18:10:40 +09:00
smoogipoo
883d5bc11d Remove automatic slider path offsetting 2019-12-09 17:54:22 +09:00
smoogipoo
fa1468325e Refactor hitobjects to remove default control point 2019-12-09 17:48:27 +09:00
smoogipoo
53f7c753fb General cleanups 2019-12-09 16:44:19 +09:00
smoogipoo
c18f2e6436 Merge remote-tracking branch 'refs/remotes/origin/master' into segmented-slider-paths-3 2019-12-09 15:34:49 +09:00
smoogipoo
aff1b93a07 Move config retrieval into LegacySliderBall 2019-12-09 14:43:23 +09:00
smoogipoo
4905709ea4 Remove unused usings 2019-12-09 13:19:21 +09:00
mcendu
76aabdd297 rename field rotate to spin 2019-12-09 12:11:04 +08:00
mcendu
eb065286ae fix ci 2019-12-09 08:49:44 +08:00
mcendu
1cf81c4906 rm unnecessary curlies 2019-12-09 08:37:32 +08:00
mcendu
b2b252a1cc Allow skin to disable spin 2019-12-09 08:36:07 +08:00
mcendu
4cd0dd7856 Move transformation to LoadComplete 2019-12-08 20:47:28 +08:00
mcendu
13b891f3f4 Crude legacy cursor rotation support 2019-12-08 20:05:02 +08:00
smoogipoo
b9d12e5fe4 Fix nested hitobjects not updating 2019-12-06 20:53:40 +09:00
smoogipoo
41437242a2 Add initial path type progression support 2019-12-06 19:39:25 +09:00
Dean Herbert
f958485be1 Add comment about size change 2019-12-06 18:54:54 +09:00
Dean Herbert
af2305bb77 Add null check 2019-12-06 18:53:30 +09:00
smoogipoo
52dd7bf716 Fix deleting the first control point not working 2019-12-06 18:49:14 +09:00
smoogipoo
16f8341a02 Handle control point positional updates within SliderPath 2019-12-06 18:49:01 +09:00
smoogipoo
2b5f9515de Fix multiple control point deletions 2019-12-06 17:03:54 +09:00
smoogipoo
d29ccdc25e Fix selection blueprint not re-snapping the path 2019-12-06 16:36:08 +09:00
smoogipoo
b4e1b5fa98 Explose + use the full calculated length of the path 2019-12-06 15:53:19 +09:00
Dean Herbert
21ceb7f85d Always display skins at native sizes for now 2019-12-06 14:40:45 +09:00
smoogipoo
a89a23fe08 Use linq to simplify some expressions 2019-12-06 13:08:35 +09:00
smoogipoo
247609388f Clean up unused/unnecessary properties 2019-12-06 12:31:22 +09:00
smoogipoo
3ebbf62b2a Initial game-wide update with the new SliderPath 2019-12-05 19:53:36 +09:00
Huo Yaoyuan
9ddfdab27a Remove meaningless Convert calls. 2019-12-03 20:47:00 +08:00
Dean Herbert
f181ee1843 Hide the menu cursor while inside the playfield by default 2019-11-29 17:35:11 +09:00
Albie
7864899249
Merge branch 'master' into cinema-mod 2019-11-28 16:42:01 +00:00
Dan Balasescu
c6a85a11bd
Merge branch 'master' into sharpen 2019-11-27 17:09:11 +09:00
Huo Yaoyuan
9425e80a5d Unify to use double in performance calculators. 2019-11-26 18:34:23 +08:00
Huo Yaoyuan
c0fe91a84c Merge branch 'master' into sharpen 2019-11-26 18:21:50 +08:00
Albie
09158b6b08
Merge branch 'master' into cinema-mod 2019-11-26 06:57:47 +00:00
Dean Herbert
709ec1404f Centralise End/StartTime retrieval to extension method 2019-11-25 19:09:14 +09:00
Albie
0a70ec0b11
Merge branch 'master' into cinema-mod 2019-11-25 07:25:30 +00:00
Berkan Diler
fccdbffa93 Use MathF instead of Math- functions when possible
MathF-functions are faster than the Math-counterpart and it looks cleaner, so use MathF when we cast to float or int anyway.
2019-11-25 00:45:42 +01:00
Albie Spriddell
3b9f59cb33 add cinema mod support 2019-11-23 17:34:53 +00:00
Albie Spriddell
20edaf4ba6 add cinema mod support 2019-11-23 17:32:16 +00:00
Dean Herbert
c2e85a2057 Apply CornerExponent fixes 2019-11-22 19:49:20 +09:00
Huo Yaoyuan
4cd7d67fe4 Use early return for if-pattern-matching. 2019-11-22 00:02:40 +08:00
Huo Yaoyuan
818553027b Merge branch 'master' into sharpen 2019-11-21 23:42:46 +08:00
Dean Herbert
201f32859a
Merge branch 'master' into slider-control-point-removal 2019-11-21 22:10:52 +09:00
Berkan Diler
6cab517b2d .NET Standard 2.1 implements Math.Clamp , use it instead of MathHelper.Clamp from osuTK. 2019-11-20 13:37:47 +01:00
Huo Yaoyuan
374ef6ff83 Merge branch 'master' into sharpen 2019-11-20 17:30:58 +08:00
Huo Yaoyuan
608785b99a Update .Net Standard projects to 2.1 2019-11-18 18:35:58 +08:00
smoogipoo
031b686ee9 Only accept input while hovered 2019-11-13 17:38:34 +09:00
smoogipoo
d835def4ab Add point count to the menu item text 2019-11-13 17:36:46 +09:00
smoogipoo
c56503ee88 Select single control point on right click 2019-11-13 17:29:00 +09:00
smoogipoo
9c52d239b4 Return null to allow passthrough 2019-11-13 16:56:48 +09:00
smoogipoo
4c0bca5c07 Add ability to delete control points via right-click option 2019-11-13 16:38:15 +09:00
Huo Yaoyuan
144812669d Use static local functions. 2019-11-12 19:56:54 +08:00
Huo Yaoyuan
dcfa98414f Use ??=. 2019-11-12 19:56:51 +08:00
Huo Yaoyuan
e5e8e70704 Use pattern matching. 2019-11-12 19:55:19 +08:00