1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-10 07:33:02 +08:00

Fix null objects

This commit is contained in:
apollo-dw 2022-08-09 13:43:12 +01:00
parent f7720e7e62
commit 3c38c9e2a7

View File

@ -3,6 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using osu.Framework.Extensions.ObjectExtensions;
using osu.Game.Rulesets.Difficulty.Preprocessing; using osu.Game.Rulesets.Difficulty.Preprocessing;
using osu.Game.Rulesets.Osu.Difficulty.Preprocessing; using osu.Game.Rulesets.Osu.Difficulty.Preprocessing;
using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects;
@ -13,7 +14,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
{ {
public static double EvaluateDifficultyOf(DifficultyHitObject current, bool hidden) public static double EvaluateDifficultyOf(DifficultyHitObject current, bool hidden)
{ {
if (current.BaseObject is Spinner) if (current.BaseObject is Spinner || current.Index == 0)
return 0; return 0;
var currObj = (OsuDifficultyHitObject)current; var currObj = (OsuDifficultyHitObject)current;
@ -32,7 +33,15 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
while (loopOpacity > 0) while (loopOpacity > 0)
{ {
var loopObj = (OsuDifficultyHitObject)currObj.Previous(previousIndex); var loopObj = (OsuDifficultyHitObject)currObj.Previous(previousIndex);
if (loopObj.IsNull())
break;
loopOpacity = currObj.OpacityAt(loopObj.StartTime, false); loopOpacity = currObj.OpacityAt(loopObj.StartTime, false);
if (loopOpacity <= 0)
break;
noteDensity += loopOpacity; noteDensity += loopOpacity;
previousIndex++; previousIndex++;
} }
@ -90,7 +99,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
{ {
OsuDifficultyHitObject currentObj = (OsuDifficultyHitObject)current.Next(i); OsuDifficultyHitObject currentObj = (OsuDifficultyHitObject)current.Next(i);
if (currentObj.OpacityAt(current.StartTime, false) <= 0) if (currentObj.IsNull() || currentObj.OpacityAt(current.StartTime, false) <= 0)
break; break;
objects.Add(currentObj); objects.Add(currentObj);