@@ -539,5 +539,85 @@ public void TestTimePreemptIsRespected()
539
539
Assert . That ( beatmap . Breaks [ 0 ] . EndTime , Is . EqualTo ( 5000 - OsuHitObject . PREEMPT_MAX ) ) ;
540
540
} ) ;
541
541
}
542
+
543
+ [ Test ]
544
+ public void TestPuttingObjectBetweenBreakEndAndAnotherObjectForcesNewCombo ( )
545
+ {
546
+ var controlPoints = new ControlPointInfo ( ) ;
547
+ controlPoints . Add ( 0 , new TimingControlPoint { BeatLength = 500 } ) ;
548
+ var beatmap = new EditorBeatmap ( new Beatmap
549
+ {
550
+ ControlPointInfo = controlPoints ,
551
+ BeatmapInfo = { Ruleset = new OsuRuleset ( ) . RulesetInfo } ,
552
+ Difficulty =
553
+ {
554
+ ApproachRate = 10 ,
555
+ } ,
556
+ HitObjects =
557
+ {
558
+ new HitCircle { StartTime = 1000 , NewCombo = true } ,
559
+ new HitCircle { StartTime = 4500 } ,
560
+ new HitCircle { StartTime = 5000 , NewCombo = true } ,
561
+ } ,
562
+ Breaks =
563
+ {
564
+ new BreakPeriod ( 2000 , 4000 ) ,
565
+ }
566
+ } ) ;
567
+
568
+ foreach ( var ho in beatmap . HitObjects )
569
+ ho . ApplyDefaults ( beatmap . ControlPointInfo , beatmap . Difficulty ) ;
570
+
571
+ var beatmapProcessor = new EditorBeatmapProcessor ( beatmap , new OsuRuleset ( ) ) ;
572
+ beatmapProcessor . PreProcess ( ) ;
573
+ beatmapProcessor . PostProcess ( ) ;
574
+
575
+ Assert . Multiple ( ( ) =>
576
+ {
577
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 1 ] ) . NewCombo , Is . True ) ;
578
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 2 ] ) . NewCombo , Is . True ) ;
579
+
580
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 0 ] ) . ComboIndex , Is . EqualTo ( 1 ) ) ;
581
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 1 ] ) . ComboIndex , Is . EqualTo ( 2 ) ) ;
582
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 2 ] ) . ComboIndex , Is . EqualTo ( 3 ) ) ;
583
+ } ) ;
584
+ }
585
+
586
+ [ Test ]
587
+ public void TestAutomaticallyInsertedBreakForcesNewCombo ( )
588
+ {
589
+ var controlPoints = new ControlPointInfo ( ) ;
590
+ controlPoints . Add ( 0 , new TimingControlPoint { BeatLength = 500 } ) ;
591
+ var beatmap = new EditorBeatmap ( new Beatmap
592
+ {
593
+ ControlPointInfo = controlPoints ,
594
+ BeatmapInfo = { Ruleset = new OsuRuleset ( ) . RulesetInfo } ,
595
+ Difficulty =
596
+ {
597
+ ApproachRate = 10 ,
598
+ } ,
599
+ HitObjects =
600
+ {
601
+ new HitCircle { StartTime = 1000 , NewCombo = true } ,
602
+ new HitCircle { StartTime = 5000 } ,
603
+ } ,
604
+ } ) ;
605
+
606
+ foreach ( var ho in beatmap . HitObjects )
607
+ ho . ApplyDefaults ( beatmap . ControlPointInfo , beatmap . Difficulty ) ;
608
+
609
+ var beatmapProcessor = new EditorBeatmapProcessor ( beatmap , new OsuRuleset ( ) ) ;
610
+ beatmapProcessor . PreProcess ( ) ;
611
+ beatmapProcessor . PostProcess ( ) ;
612
+
613
+ Assert . Multiple ( ( ) =>
614
+ {
615
+ Assert . That ( beatmap . Breaks , Has . Count . EqualTo ( 1 ) ) ;
616
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 1 ] ) . NewCombo , Is . True ) ;
617
+
618
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 0 ] ) . ComboIndex , Is . EqualTo ( 1 ) ) ;
619
+ Assert . That ( ( ( HitCircle ) beatmap . HitObjects [ 1 ] ) . ComboIndex , Is . EqualTo ( 2 ) ) ;
620
+ } ) ;
621
+ }
542
622
}
543
623
}
0 commit comments