private static void parseHitObjectsSection(EditorBeatmap beatmap, StreamReader reader) { OsuHitObject previousHitObject = null; var colorIndex = 0; var comboIndex = 0; reader.ParseSectionLines(line => { var hitobject = OsuHitObject.Parse(beatmap, line); if (hitobject.NewCombo || previousHitObject == null || (previousHitObject.Flags & HitObjectFlag.Spinner) > 0) { hitobject.Flags |= HitObjectFlag.NewCombo; var colorIncrement = hitobject.ComboOffset; if ((hitobject.Flags & HitObjectFlag.Spinner) == 0) { colorIncrement++; } colorIndex = (colorIndex + colorIncrement) % beatmap.comboColors.Count; comboIndex = 1; } else { comboIndex++; } hitobject.ComboIndex = comboIndex; hitobject.ColorIndex = colorIndex; hitobject.Color = beatmap.comboColors[colorIndex]; beatmap.hitObjects.Add(hitobject); previousHitObject = hitobject; }); }