示例#1
0
        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;
            });
        }