Example #1
0
        /// <summary>
        /// Hold, Slideを配置します。
        /// 終端ノーツにAirやAirHoldが付随していた場合、それらも配置します。
        /// </summary>
        public bool Put(LongNote longNote)
        {
            if (longNote == null)
            {
                Logger.Error("ロングノーツを追加できません。引数がnullです。", true);
                return(false);
            }
            switch (longNote)
            {
            case Hold hold:
            {
                holdNotes.Add(hold);
                HoldEnd end = hold.EndNote as HoldEnd;
                if (end == null)
                {
                    Logger.Warn("EndNoteがnullでした。");
                    break;
                }
                if (end.IsAirAttached)
                {
                    airNotes.Add(end.Air);
                }
                if (end.IsAirHoldAttached)
                {
                    airHoldNotes.Add(end.AirHold);
                }
            }
            break;

            case Slide slide:
            {
                slideNotes.Add(slide);
                SlideEnd end = slide.EndNote as SlideEnd;
                if (end == null)
                {
                    Logger.Warn("EndNoteがnullでした。");
                    break;
                }
                if (end.IsAirAttached)
                {
                    airNotes.Add(end.Air);
                }
                if (end.IsAirHoldAttached)
                {
                    airHoldNotes.Add(end.AirHold);
                }
            }
            break;

            default:
            {
                Logger.Warn("不適切なロングノーツを追加できません。", true);
                return(false);
            }
            }
            return(true);
        }
Example #2
0
        public Slide(int size, Position pos, PointF location, int laneIndex)
        {
            SlideBegin slideBegin = new SlideBegin(size, pos, location, laneIndex);

            Add(slideBegin);
            location.Y -= ScoreInfo.UnitBeatHeight * ScoreInfo.MaxBeatDiv / Status.Beat;
            SlideEnd slideEnd = new SlideEnd(size, pos.Next(), location, laneIndex);

            Add(slideEnd);
            Status.SelectedNote = slideEnd;
        }
Example #3
0
 private bool Add(SlideEnd slideEnd)
 {
     if (!IsPositionTickAvailable(slideEnd, slideEnd.Position))
     {
         Status.SelectedNote = null;
         return(false);
     }
     base.Add(slideEnd);
     slideEnd.IsPositionAvailable += IsPositionTickAvailable;
     return(true);
 }