/// <summary> /// NoteBubbleAnimation Constructor. /// </summary> /// <param name="nbVM">Linked with the NoteBubbleVM</param> /// <param name="s">The current SessionViewModel</param> public NoteBubbleAnimation(NoteBubbleViewModel nbVM, SessionViewModel s) : base() { sessionVM = s; noteBubbleVM = nbVM; SVItem = nbVM.SVItem; ParentSV = nbVM.ParentSV; canAnimate = true; NothingAtThisPlace = true; noteBubbleDT = new DispatcherTimer(); noteBubbleDT.Tick += new EventHandler(t_Tick); SVItem.ContainerManipulationCompleted += touchLeave; SVItem.PreviewTouchDown += touchDown; Animate(); }
/// <summary> /// Transform a NoteViewModel on a Bubble /// </summary> /// <param name="removeNote">Set this to true if noteVM is NOT over another noteVM</param> public void BackToBubbleFormat(bool removeNote) { if (removeNote) { sessionVM.NotesOnStave.Remove(noteVM); sessionVM.Session.StaveTop.RemoveNote(noteVM.Note); sessionVM.Session.StaveBottom.RemoveNote(noteVM.Note); } sessionVM.Notes.Items.Remove(noteVM.SVItem); noteVM.Note.Position = -1; noteVM.Note.Pitch = "la"; if (noteVM.Note.Sharp) { NoteBubbleViewModel nbVMA = new NoteBubbleViewModel(noteVM.SVItem.Center, new NoteBubble(new Note(noteVM.Note)), sessionVM.Bubbles, sessionVM); nbVMA.NoteBubble.Note.Duration = NoteValue.alteration; nbVMA.NoteBubble.Note.Sharp = true; noteVM.Note.Sharp = false; if (sessionVM.NbgVM.NoteBubbleVMs.Count >= GlobalVariables.MaxNoteBubbles) { NoteBubbleViewModel toRemove = sessionVM.NbgVM.NoteBubbleVMs.First(); sessionVM.NbgVM.NoteBubbleVMs.Remove(toRemove); sessionVM.Bubbles.Items.Remove(toRemove.SVItem); toRemove = null; } sessionVM.Bubbles.Items.Add(nbVMA.SVItem); sessionVM.NbgVM.NoteBubbleVMs.Add(nbVMA); nbVMA.Animation.MoveFromLocation(); } else if (noteVM.Note.Flat) { NoteBubbleViewModel nbVMA = new NoteBubbleViewModel(noteVM.SVItem.Center, new NoteBubble(new Note(noteVM.Note)), sessionVM.Bubbles, sessionVM); nbVMA.NoteBubble.Note.Duration = NoteValue.alteration; nbVMA.NoteBubble.Note.Flat = true; noteVM.Note.Flat = false; if (sessionVM.NbgVM.NoteBubbleVMs.Count >= GlobalVariables.MaxNoteBubbles) { NoteBubbleViewModel toRemove = sessionVM.NbgVM.NoteBubbleVMs.First(); sessionVM.NbgVM.NoteBubbleVMs.Remove(toRemove); sessionVM.Bubbles.Items.Remove(toRemove.SVItem); toRemove = null; } sessionVM.Bubbles.Items.Add(nbVMA.SVItem); sessionVM.NbgVM.NoteBubbleVMs.Add(nbVMA); nbVMA.Animation.MoveFromLocation(); } NoteBubbleViewModel nbVM = new NoteBubbleViewModel(noteVM.SVItem.Center, new NoteBubble(noteVM.Note), sessionVM.Bubbles, sessionVM); if (sessionVM.NbgVM.NoteBubbleVMs.Count >= GlobalVariables.MaxNoteBubbles) { NoteBubbleViewModel toRemove = sessionVM.NbgVM.NoteBubbleVMs.First(); sessionVM.NbgVM.NoteBubbleVMs.Remove(toRemove); sessionVM.Bubbles.Items.Remove(toRemove.SVItem); toRemove = null; } sessionVM.Bubbles.Items.Add(nbVM.SVItem); sessionVM.NbgVM.NoteBubbleVMs.Add(nbVM); String effect = "pop" + (new Random()).Next(1, 5).ToString(); AudioController.PlaySoundWithString(effect); }