Example #1
0
 /// <summary>
 /// This method will play the notes in the song in sequence
 /// </summary>
 public static void PlaySong()
 {
     Stop = false;
     foreach (INote note in Song)
     {
         if (!Stop)
         {
             try
             {
                 if (note is Note)
                 {
                     if (CustomNotes.ContainsKey((Note)note))
                     {
                         Note customNote;
                         CustomNotes.TryGetValue((Note)note, out customNote);
                         customNote.Play();
                     }
                     else
                     {
                         note.Play();
                     }
                 }
                 else
                 {
                     note.Play();
                 }
                 if (note is Note || note is MultiNote)
                 {
                     if (isFastSpeed)
                     {
                         Thread.Sleep(DelayAtFastSpeed);
                     }
                     else
                     {
                         Thread.Sleep(DelayAtNormalSpeed);
                     }
                 }
             }
             catch (AutoplayerTargetNotFoundException error)
             {
                 Stop = true;
                 SongWasInteruptedByException?.Invoke(error);
             }
             catch (ArgumentException)
             {
                 Stop = true;
                 SongWasInteruptedByException?.Invoke(new AutoplayerException($"The program encountered an invalid note. Please inform the developer of this incident so it can be added to the list of invalid characters. Info: '{note.ToString()}'"));
             }
         }
         else
         {
             //The foreach loop here is to avoid any keys getting stuck when the song is stopped by the stop keybinding
             foreach (INote n in Song)
             {
                 if (n is Note)
                 {
                     ((Note)n).Stop();
                 }
                 if (n is MultiNote)
                 {
                     ((MultiNote)n).Stop();
                 }
             }
             SongWasStopped?.Invoke();
         }
     }
     if (Loop)
     {
         PlaySong();
     }
     SongFinishedPlaying?.Invoke();
 }
Example #2
0
 /// <summary>
 /// This method will check if a note exists in the list of custom notes
 /// If it does, it returns true, otherwise it returns false
 /// </summary>
 public static bool CheckNoteExists(Note note)
 {
     return(CustomNotes.ContainsKey(note));
 }