示例#1
0
    public void MirrorSelectedNotes()
    {
        var             selected = AdeCursorManager.Instance.SelectedNotes;
        List <ICommand> commands = new List <ICommand>();

        foreach (var n in selected)
        {
            switch (n)
            {
            case ArcTap tap:
                ArcTap newtap = tap.Clone() as ArcTap;
                newtap.Track = 5 - newtap.Track;
                commands.Add(new EditArcEventCommand(tap, newtap));
                break;

            case ArcHold hold:
                ArcHold newhold = hold.Clone() as ArcHold;
                newhold.Track = 5 - newhold.Track;
                commands.Add(new EditArcEventCommand(hold, newhold));
                break;

            case ArcArc arc:
                ArcArc newarc = arc.Clone() as ArcArc;
                newarc.XStart = 1 - newarc.XStart;
                newarc.XEnd   = 1 - newarc.XEnd;
                if (newarc.Color < 2)
                {
                    newarc.Color = 1 - newarc.Color;
                }
                commands.Add(new EditArcEventCommand(arc, newarc));
                break;
            }
        }
        CommandManager.Instance.Add(new BatchCommand(commands.ToArray(), "镜像"));
    }
示例#2
0
 public void OnTrack(InputField inputField)
 {
     if (!canEdit)
     {
         return;
     }
     try
     {
         string t     = inputField.text;
         int    track = int.Parse(t);
         if (track <= 0 || track >= 5)
         {
             throw new InvalidDataException("轨道只能为 1 - 4");
         }
         List <EditArcEventCommand> commands = new List <EditArcEventCommand>();
         foreach (var n in AdeCursorManager.Instance.SelectedNotes)
         {
             if (n is ArcTap)
             {
                 ArcTap ne = n.Clone() as ArcTap;
                 ne.Track = track;
                 commands.Add(new EditArcEventCommand(n, ne));
             }
             else if (n is ArcHold)
             {
                 ArcHold ne = n.Clone() as ArcHold;
                 ne.Track = track;
                 commands.Add(new EditArcEventCommand(n, ne));
             }
         }
         if (commands.Count == 1)
         {
             CommandManager.Instance.Add(commands[0]);
         }
         else if (commands.Count > 1)
         {
             CommandManager.Instance.Add(new BatchCommand(commands.ToArray(), "批量修改 Note"));
         }
     }
     catch (Exception Ex)
     {
         AdeToast.Instance.Show("赋值时出现错误");
         Debug.LogException(Ex);
     }
 }
 public void Remove(ArcTap tap)
 {
     tap.Destroy();
     Taps.Remove(tap);
 }
 public void Add(ArcTap tap)
 {
     tap.Instantiate();
     Taps.Add(tap);
     tap.SetupArcTapConnection();
 }
示例#5
0
        private void AddNoteHandler()
        {
            if (!AdeCursorManager.Instance.IsHorizontalHit)
            {
                return;
            }
            if (skipNextClick)
            {
                skipNextClick = false;
                return;
            }
            Vector3 pos    = AdeCursorManager.Instance.AttachedHorizontalPoint;
            int     timing = ArcTimingManager.Instance.CalculateTimingByPosition(-pos.z * 1000) - ArcAudioManager.Instance.AudioOffset;
            ArcNote note   = null;

            switch (Mode)
            {
            case ClickToCreateMode.Tap:
                note = new ArcTap()
                {
                    Timing = timing, Track = PositionToTrack(pos.x)
                };
                break;

            case ClickToCreateMode.Hold:
                note = new ArcHold()
                {
                    Timing = timing, Track = PositionToTrack(pos.x), EndTiming = timing
                };
                break;

            case ClickToCreateMode.Arc:
                note = new ArcArc()
                {
                    Timing = timing, EndTiming = timing, Color = currentArcColor, IsVoid = currentArcIsVoid, LineType = currentArcType
                };
                break;

            case ClickToCreateMode.ArcTap:
                note = new ArcArcTap()
                {
                    Timing = timing
                };
                break;
            }
            if (note == null)
            {
                return;
            }
            switch (Mode)
            {
            case ClickToCreateMode.Tap:
                CommandManager.Instance.Add(new AddArcEventCommand(note));
                break;

            case ClickToCreateMode.Hold:
            case ClickToCreateMode.Arc:
                CommandManager.Instance.Prepare(new AddArcEventCommand(note));
                break;

            case ClickToCreateMode.ArcTap:
                if (canAddArcTap)
                {
                    CommandManager.Instance.Add(new AddArcTapCommand(selectedArc, note as ArcArcTap));
                }
                else
                {
                    if (selectedArc != null)
                    {
                        selectedArc = null;
                        Mode        = ClickToCreateMode.Idle;
                    }
                }
                break;
            }
            if (note is ArcLongNote)
            {
                pendingNote = note as ArcLongNote;
            }
            switch (Mode)
            {
            case ClickToCreateMode.Hold:
                PostCreateHoldNote(note as ArcHold);
                break;

            case ClickToCreateMode.Arc:
                PostCreateArcNote(note as ArcArc);
                break;
            }
        }