/// <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();
        }
Beispiel #2
0
        /// <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);
        }