private void RestartGame_Executed(object sender, ExecutedRoutedEventArgs eventArgs) { if (ScoreManager.Current.ScoreValue > 0) { var result = ThreeButtonsMessageBox.Show("Отправить результат и перезапустить игру?", "Перезапуск", "Отправить", "Заново", "Отмена"); if (result == MessageBoxResult.Cancel) { return; } if (result == MessageBoxResult.Yes) { // Отправка результата. EnterNameComponent.Show((s, ee) => { ScoreManager.EndGame(false); ScoreManager.Load(); int place = ScoreManager.GetPlace(); string text = (place > 0) ? "Вы на " + place + " месте в рейтинге" : ""; HiscoreComponent.Show(ScoreManager.HiScores, text); RestartGame(); }); return; } } // Перезапуск игры RestartGame(); }
/// <summary> /// Подтверждение при закрытия окна. /// Если есть какие-либо результаты, то выводит запрос отправки /// результата с возможностью отмены закрытия окна. Иначе закрывает /// окно без подтверждения. /// </summary> /// <returns>true - разрешено завершить приложение</returns> public bool OnCloseView() { if (ScoreManager.Current.ScoreValue <= 0) { return(true); } var result = ThreeButtonsMessageBox.Show("Отправить результат и выйти?", "Выйти из игры", "Отправить", "Выйти", "Отмена"); if (result == MessageBoxResult.Cancel) { // Пользователь отменил выход из приложения. return(false); } if (result == MessageBoxResult.No) { // Выход из приложения. _timer.Stop(); return(true); } // Отправляем результат, после чего выходим. EnterNameComponent.Show((s, e) => { ScoreManager.EndGame(false); _timer.Stop(); // Чтобы вновь не появился запрос на выход, сбрасываем текущий результат. ScoreManager.Current.ScoreValue = 0; Window.GetWindow(this).Close(); }); // Выход будет производится по окончанию ввода имени. return(false); }