/// <summary> /// Prepares the items for practice. /// </summary> public void Practice() { itemsForPractice = Helper.MixItems <PracticeResult <SceneItem> >(SelectedScene.SceneItems.Select(i => new PracticeResult <SceneItem>(i)).ToList()); lastPlayedItem = itemsForPractice.ElementAt(0); lastPlayedItem.Status = PracticeItemStatus.Asking; PlayThisItemAsync(lastPlayedItem.Item); lastPlayedItem.Status = PracticeItemStatus.Asked; }
public void ContinuePractice() { if (SelectedSceneItem != lastPlayedItem.Item) { if (lastPlayedItem.WrongAnswersCount == 3) { lastPlayedItem.WrongAnswersCount = 0; PlayThisItemAsync(lastPlayedItem.Item); HiglightThisItem(lastPlayedItem.Item, lastPlayedItem.Item.Phrase.SoundLength.TotalMilliseconds, PracticeItemResult.Fixed); return; } lastPlayedItem.WrongAnswersCount++; PlayThisItemAsync(lastPlayedItem.Item); HiglightThisItem(SelectedSceneItem, lastPlayedItem.Item.Phrase.SoundLength.TotalMilliseconds, PracticeItemResult.Wrong); } else { PlayThisItemAsync(lastPlayedItem.Item); HiglightThisItem(lastPlayedItem.Item, lastPlayedItem.Item.Phrase.SoundLength.TotalMilliseconds, PracticeItemResult.Right); Action playNextAction = new Action(() => { lastPlayedItem = itemsForPractice.FirstOrDefault(i => i.Status == PracticeItemStatus.Notasked); if (lastPlayedItem == null) { var practiceFinished = PracticeFinished; if (practiceFinished != null) { practiceFinished(this, new PraceticeFinishedEventArgs("Do you want redo this scene?")); } return; } lastPlayedItem.Status = PracticeItemStatus.Asking; PlayThisItemAsync(lastPlayedItem.Item); lastPlayedItem.Status = PracticeItemStatus.Asked; }); RunAction(playNextAction, lastPlayedItem.Item.Phrase.SoundLength.TotalMilliseconds); } }