@@ -227,16 +227,22 @@ private void HandleKeyPressesInFrame()
227227 . Concat ( previousFramePressed . Except ( currentFramePressed ) )
228228 . ToList ( ) ;
229229
230+ // Handle mines that were hit between frames.
231+ // The previous frame's pressed keys are held up until now, so [previousFrameTime..Time)
232+ // is the interval to check for mine hits.
230233 foreach ( var lane in previousFramePressed )
231234 {
232235 foreach ( var mine in ActiveMines )
233236 {
237+ // Check for any mines that were hit between the previous and the current frame
234238 var endTime = mine . IsLongNote ? mine . EndTime : mine . StartTime ;
235239 if ( mine . Lane == lane + 1
236240 && endTime + ScoreProcessor . JudgementWindow [ Judgement . Marv ] > previousFrameTime
237241 && Time >= mine . StartTime - ScoreProcessor . JudgementWindow [ Judgement . Marv ] )
238242 {
239243 // Calculate the hit difference.
244+ // If this lane had been pressed before the mine appeared, give maximum early hit window
245+ // If pressed somewhere within the mine's hit window, accurate hit error can be given
240246 var hitDifference =
241247 mine . StartTime - ScoreProcessor . JudgementWindow [ Judgement . Marv ] > previousFrameTime
242248 ? ( int ) ScoreProcessor . JudgementWindow [ Judgement . Marv ]
@@ -246,6 +252,7 @@ private void HandleKeyPressesInFrame()
246252 var stat = new HitStat ( HitStatType . Miss , KeyPressType . Press , mine , Time , Judgement . Miss , hitDifference ,
247253 ScoreProcessor . Accuracy , ScoreProcessor . Health ) ;
248254
255+ ScoreProcessor . CalculateScore ( stat ) ;
249256 ScoreProcessor . Stats . Add ( stat ) ;
250257
251258 // Object needs to be removed from ActiveObjects.
@@ -430,16 +437,17 @@ private void HandleMissedHitObjects()
430437 }
431438 }
432439 // Handle missed mines.
440+ // 'Missed' as in the mines were not triggered, meaning a marvelous judgement should be given.
433441 foreach ( var hitObject in ActiveMines )
434442 {
435443 var endTime = hitObject . IsLongNote ? hitObject . EndTime : hitObject . StartTime ;
436444 if ( Time > endTime + ScoreProcessor . JudgementWindow [ Judgement . Marv ] )
437445 {
438446 // Create a new HitStat to add to the ScoreProcessor.
447+ // Award a Marvelous for successfully avoiding the mine.
439448 var stat = new HitStat ( HitStatType . Hit , KeyPressType . None , hitObject , hitObject . StartTime , Judgement . Marv , 0 ,
440449 ScoreProcessor . Accuracy , ScoreProcessor . Health ) ;
441450
442- // Add a miss to the score.
443451 ScoreProcessor . CalculateScore ( stat ) ;
444452
445453 ScoreProcessor . Stats . Add ( stat ) ;
0 commit comments